/*
* RapidMiner
*
* Copyright (C) 2001-2011 by Rapid-I and the contributors
*
* Complete list of developers available at our web site:
*
* http://rapid-i.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.rapidminer.gui.operatortree;
import java.awt.BorderLayout;
import java.awt.Component;
import java.util.List;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JToggleButton;
import com.rapidminer.Process;
import com.rapidminer.gui.MainFrame;
import com.rapidminer.gui.processeditor.ProcessEditor;
import com.rapidminer.gui.tools.ExtendedJScrollPane;
import com.rapidminer.gui.tools.PrintingTools;
import com.rapidminer.gui.tools.ResourceDockKey;
import com.rapidminer.gui.tools.ViewToolBar;
import com.rapidminer.operator.Operator;
import com.vlsolutions.swing.docking.DockKey;
import com.vlsolutions.swing.docking.Dockable;
/**
* @author Tobias Malbrecht
*/
public class OperatorTreePanel extends JPanel implements Dockable, ProcessEditor {
private static final long serialVersionUID = -6121229143892782298L;
private final OperatorTree operatorTree;
public OperatorTreePanel(final MainFrame mainFrame) {
operatorTree = new OperatorTree(mainFrame);
ViewToolBar toolBar = new ViewToolBar();
toolBar.add(mainFrame.getActions().NEW_OPERATOR_ACTION);
toolBar.add(mainFrame.getActions().NEW_BUILDING_BLOCK_ACTION);
toolBar.add(mainFrame.REWIRE_RECURSIVELY);
JToggleButton toggleAllBreakpointsButton = mainFrame.getActions().TOGGLE_ALL_BREAKPOINTS.createToggleButton();
toggleAllBreakpointsButton.setText(null);
toolBar.add(toggleAllBreakpointsButton);
toolBar.add(operatorTree.EXPAND_ALL_ACTION, ViewToolBar.RIGHT);
toolBar.add(operatorTree.COLLAPSE_ALL_ACTION, ViewToolBar.RIGHT);
PrintingTools.makeExportPrintDropDownButton(this, "Tree").addToToolBar(toolBar, ViewToolBar.RIGHT);
setLayout(new BorderLayout());
add(toolBar, BorderLayout.NORTH);
JScrollPane scrollPane = new ExtendedJScrollPane(operatorTree);
scrollPane.setBorder(null);
add(scrollPane, BorderLayout.CENTER);
}
private final DockKey DOCK_KEY = new ResourceDockKey("operator_tree");
{
DOCK_KEY.setDockGroup(MainFrame.DOCK_GROUP_ROOT);
}
private Component component;
@Override
public Component getComponent() {
if (component == null) {
component = this;
}
return component;
}
@Override
public DockKey getDockKey() {
return DOCK_KEY;
}
@Override
public void processChanged(Process process) {
operatorTree.processChanged(process);
}
@Override
public void processUpdated(Process process) {
operatorTree.processUpdated(process);
}
@Override
public void setSelection(List<Operator> selection) {
operatorTree.setSelection(selection);
}
public OperatorTree getOperatorTree() {
return operatorTree;
}
}