@Override
  public void setSelection(List<Operator> selection) {
    Operator operator = selection.isEmpty() ? null : selection.get(0);
    if (operator == this.operator) {
      return;
    }
    if (this.operator != null) {
      this.operator.getParameters().removeObserver(parameterObserver);
    }
    this.operator = operator;
    if (operator != null) {
      this.operator.getParameters().addObserver(parameterObserver, true);
      breakpointButton.setEnabled(true);

      // compatibility level
      OperatorVersion[] versionChanges = operator.getIncompatibleVersionChanges();
      if (versionChanges.length == 0) {
        // no incompatible versions exist
        compatibilityLevelSpinner.setVisible(false);
        compatibilityLabel.setVisible(false);
      } else {
        compatibilityLevelSpinner.setVisible(true);
        compatibilityLabel.setVisible(true);
        ((CompatibilityLevelSpinnerModel) compatibilityLevelSpinner.getModel())
            .setOperator(operator);
      }

    } else {
      breakpointButton.setEnabled(false);
    }
    setNameFor(operator);
    setupComponents();
  }
  @Override
  public Component getComponent() {
    if (dockableComponent == null) {
      JScrollPane scrollPane = new ExtendedJScrollPane(this);
      scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
      scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
      scrollPane.setBorder(null);

      dockableComponent = new JPanel(new BorderLayout());

      JPanel toolBarPanel = new JPanel(new BorderLayout());
      ViewToolBar toolBar = new ViewToolBar();
      JToggleButton toggleExpertModeButton =
          mainFrame.TOGGLE_EXPERT_MODE_ACTION.createToggleButton();
      toggleExpertModeButton.setText(null);
      toolBar.add(toggleExpertModeButton);
      Action infoOperatorAction =
          new InfoOperatorAction() {
            private static final long serialVersionUID = 6758272768665592429L;

            @Override
            protected Operator getOperator() {
              return mainFrame.getFirstSelectedOperator();
            }
          };
      toolBar.add(infoOperatorAction);
      JToggleButton enableOperatorButton =
          new ToggleActivationItem(mainFrame.getActions()).createToggleButton();
      enableOperatorButton.setText(null);
      toolBar.add(enableOperatorButton);
      Action renameOperatorAction =
          new ResourceAction(true, "rename_in_processrenderer") {
            {
              setCondition(OPERATOR_SELECTED, MANDATORY);
            }

            private static final long serialVersionUID = -3104160320178045540L;

            @Override
            public void actionPerformed(ActionEvent e) {
              Operator operator = mainFrame.getFirstSelectedOperator();
              String name = SwingTools.showInputDialog("rename_operator", operator.getName());
              if (name != null && name.length() > 0) {
                operator.rename(name);
              }
            }
          };
      toolBar.add(renameOperatorAction);
      toolBar.add(new DeleteOperatorAction());
      breakpointButton.addToToolBar(toolBar);
      //			toolBar.add(mainFrame.getActions().MAKE_DIRTY_ACTION);
      toolBarPanel.add(toolBar, BorderLayout.NORTH);

      JPanel headerPanel = new JPanel();
      headerPanel.setBackground(SwingTools.LIGHTEST_BLUE);
      headerPanel.add(headerLabel);
      headerPanel.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.LIGHT_GRAY));
      toolBarPanel.add(headerPanel, BorderLayout.SOUTH);

      dockableComponent.add(toolBarPanel, BorderLayout.NORTH);
      dockableComponent.add(scrollPane, BorderLayout.CENTER);

      // compatibility level and warnings
      JPanel southPanel = new JPanel(new BorderLayout());
      southPanel.add(expertModeHintLabel, BorderLayout.CENTER);
      compatibilityLabel.setLabelFor(compatibilityLevelSpinner);
      compatibilityLevelSpinner.setPreferredSize(
          new Dimension(80, (int) compatibilityLevelSpinner.getPreferredSize().getHeight()));
      compatibilityPanel.add(compatibilityLabel);
      compatibilityPanel.add(compatibilityLevelSpinner);
      southPanel.add(compatibilityPanel, BorderLayout.SOUTH);

      dockableComponent.add(southPanel, BorderLayout.SOUTH);
    }
    return dockableComponent;
  }