예제 #1
0
파일: Editor.java 프로젝트: TouK/soapuii
    @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();
            }
          });
    }