/*******************************************************************************
* Copyright 2010 Simon Mieth
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package org.kabeja.ui.impl;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.tree.TreeModel;
import org.kabeja.processing.ProcessingManager;
import org.kabeja.ui.model.ProcessingTreeModelPresenter;
import de.miethxml.toolkit.ui.PanelFactory;
import de.miethxml.toolkit.ui.UIUtils;
public class ProcessingTreeViewBuilder {
protected ProcessingManager manager;
protected JTree tree;
public ProcessingTreeViewBuilder(ProcessingManager manager) {
this.manager = manager;
}
public javax.swing.JComponent getView() {
JSplitPane sp = PanelFactory.createOneTouchSplitPane();
tree = new JTree(((TreeModel) new ProcessingTreeModelPresenter(
this.manager)));
tree.setEditable(true);
tree.setDragEnabled(true);
tree.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
tree.setRowHeight(0);
JScrollPane scroll = new JScrollPane(tree);
scroll.setBorder(BorderFactory.createEmptyBorder());
JPanel panel = PanelFactory.createTitledPanel(scroll, "ProcessingTree",
"Options", createBorderMenu());
panel.setPreferredSize(new Dimension(150, 350));
sp.setLeftComponent(panel);
JPanel panel2 = PanelFactory.createTitledPanel(new JPanel(),
"Property Editor");
panel2.setPreferredSize(new Dimension(150, 70));
sp.setRightComponent(panel2);
return sp;
}
private JPopupMenu createBorderMenu() {
JPopupMenu bordermenu = new JPopupMenu();
JMenuItem item = new JMenuItem("Expand All",
new ImageIcon(UIUtils.resourceToBytes(this.getClass(),
"/icons/expand_all.gif")));
item.setMnemonic('E');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = 0;
while (row < tree.getRowCount()) {
tree.expandRow(row);
row++;
}
}
});
bordermenu.add(item);
item = new JMenuItem("Collapse All",
new ImageIcon(UIUtils.resourceToBytes(this.getClass(),
"/icons/collapse_all.gif")));
item.setMnemonic('C');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = tree.getRowCount() - 1;
while (row > 0) {
tree.collapseRow(row);
row--;
}
}
});
bordermenu.add(item);
return bordermenu;
}
}