@SuppressWarnings("unchecked") public void stateChanged(ChangeEvent e) { int currentViewIndex = views.indexOf(currentView); if (currentView != null) { if (inputTabs.getSelectedIndex() == currentViewIndex) return; if (!currentView.deactivate()) { inputTabs.setSelectedIndex(currentViewIndex); return; } } EditorView<T> previousView = currentView; int selectedIndex = inputTabs.getSelectedIndex(); if (selectedIndex == -1) { currentView = null; return; } currentView = views.get(selectedIndex); if (currentView != null && !currentView.activate( previousView == null ? null : previousView.getEditorLocation())) { inputTabs.setSelectedIndex(currentViewIndex); if (currentViewIndex == -1) return; } EditorInspector<T> currentInspector = (EditorInspector<T>) inspectorPanel.getCurrentInspector(); if (currentInspector != null) { lastDividerLocation = inspectorPanel.getDividerLocation(); } for (Inspector inspector : inspectorPanel.getInspectors()) { inspectorPanel.setInspectorVisible( inspector, ((EditorInspector<T>) inspector).isEnabledFor(currentView)); } if (currentInspector != null && ((EditorInspector<T>) currentInspector).isEnabledFor(currentView)) { if (lastDividerLocation == 0) inspectorPanel.setResetDividerLocation(); else inspectorPanel.setDividerLocation(lastDividerLocation); } else currentInspector = null; SwingUtilities.invokeLater( new Runnable() { public void run() { if (currentView != null) currentView.getComponent().requestFocus(); } }); }