// first construct the toolbar for saving, loading etc
if (m_showFileMenu) {
JToolBar fixedTools = new JToolBar();
fixedTools.setOrientation(JToolBar.HORIZONTAL);
m_cutB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"cut.png")));
m_cutB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_cutB.setToolTipText("Cut selected");
m_copyB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"page_copy.png")));
m_copyB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_copyB.setToolTipText("Copy selected");
m_pasteB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"paste_plain.png")));
m_pasteB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_pasteB.setToolTipText("Paste from clipboard");
m_deleteB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"delete.png")));
m_deleteB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_deleteB.setToolTipText("Delete selected");
m_snapToGridB = new JToggleButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"shape_handles.png")));
//m_snapToGridB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_snapToGridB.setToolTipText("Snap to grid");
/*Dimension d = m_snapToGridB.getPreferredSize();
d = new Dimension((int)d.getWidth() * 8, (int)d.getHeight()*8);
m_snapToGridB.setPreferredSize(d);*/
m_saveB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"disk.png")));
m_saveB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_saveB.setToolTipText("Save layout");
m_saveBB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"disk_multiple.png")));
m_saveBB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_saveBB.setToolTipText("Save layout with new name");
m_loadB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"folder_add.png")));
m_loadB.setToolTipText("Load layout");
m_loadB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_newB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"page_add.png")));
m_newB.setToolTipText("New layout");
m_newB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_newB.setEnabled(getAllowMultipleTabs());
m_helpB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"help.png")));
m_helpB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_helpB.setToolTipText("Display help");
m_togglePerspectivesB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"cog_go.png")));
m_togglePerspectivesB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_togglePerspectivesB.setToolTipText("Show/hide perspectives toolbar");
m_templatesB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"application_view_tile.png")));
m_templatesB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_templatesB.setToolTipText("Load a template layout");
m_noteB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"note_add.png")));
m_noteB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_noteB.setToolTipText("Add a note to the layout");
m_selectAllB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"shape_group.png")));
m_selectAllB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_selectAllB.setToolTipText("Select all");
m_undoB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"arrow_undo.png")));
m_undoB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_undoB.setToolTipText("Undo");
fixedTools.add(m_selectAllB);
fixedTools.add(m_cutB);
fixedTools.add(m_copyB);
fixedTools.add(m_deleteB);
fixedTools.add(m_pasteB);
fixedTools.add(m_undoB);
fixedTools.add(m_noteB);
fixedTools.addSeparator();
fixedTools.add(m_snapToGridB);
fixedTools.addSeparator();
fixedTools.add(m_newB);
fixedTools.add(m_saveB);
fixedTools.add(m_saveBB);
fixedTools.add(m_loadB);
fixedTools.add(m_templatesB);
fixedTools.addSeparator();
fixedTools.add(m_togglePerspectivesB);
fixedTools.add(m_helpB);
Dimension d = m_undoB.getPreferredSize();
Dimension d2 = fixedTools.getMinimumSize();
Dimension d3 = new Dimension(d2.width, d.height + 4);
fixedTools.setPreferredSize(d3);
fixedTools.setMaximumSize(d3);
m_saveB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveLayout(m_mainKFPerspective.getCurrentTabIndex(), false);
}
});
m_saveBB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveLayout(m_mainKFPerspective.getCurrentTabIndex(), true);
}
});
m_loadB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
m_flowEnvironment = new Environment();
loadLayout();
}
});
m_newB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
clearLayout();
}
});
m_selectAllB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (BeanInstance.
getBeanInstances(m_mainKFPerspective.getCurrentTabIndex()).size() > 0) {
// select all beans
Vector allBeans = BeanInstance.
getBeanInstances(m_mainKFPerspective.getCurrentTabIndex());
Vector newSelected = new Vector();
for (int i = 0; i < allBeans.size(); i++) {
newSelected.add(allBeans.get(i));
}
// toggle
if (newSelected.size() ==
m_mainKFPerspective.getSelectedBeans().size()) {
// unselect all beans
m_mainKFPerspective.setSelectedBeans(new Vector());
} else {
// select all beans
m_mainKFPerspective.setSelectedBeans(newSelected);
}
}
}
});
m_cutB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// only delete if our copy was successful!
if (copyToClipboard()) {
deleteSelectedBeans();
}
}
});
m_deleteB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
deleteSelectedBeans();
}
});
m_copyB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
copyToClipboard();
m_mainKFPerspective.setSelectedBeans(new Vector());
}
});
m_pasteB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
KnowledgeFlowApp.this.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
m_mode = PASTING;
/* pasteFromClipboard(10, 10);
if (m_mainKFPerspective.getSelectedBeans().size() > 0) {
m_mainKFPerspective.setSelectedBeans(new Vector());
} */
}
});
m_snapToGridB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (m_snapToGridB.isSelected()) {
snapSelectedToGrid();
}
}
});
fixedTools.setFloatable(false);
toolBarPanel.add(fixedTools, BorderLayout.EAST);
}
m_noteB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Note n = new Note();
m_toolBarBean = n;
KnowledgeFlowApp.this.setCursor(Cursor.
getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
m_mode = ADDING;
}
});
m_undoB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Stack<File> undo = m_mainKFPerspective.getUndoBuffer();
if (undo.size() > 0) {
File undoF = undo.pop();
if (undo.size() == 0) {
m_undoB.setEnabled(false);
}
loadLayout(undoF, false, true);
}
}
});
m_playB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"resultset_next.png")));
m_playB.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
m_playB.setToolTipText("Run this flow (all start points launched in parallel)");
m_playB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (BeanInstance.getBeanInstances(m_mainKFPerspective.
getCurrentTabIndex()).size() == 0) {
return;
}
runFlow(false);
}
});
m_playBB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"resultset_last.png")));
m_playBB.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
m_playBB.setToolTipText("Run this flow (start points launched sequentially)");
m_playBB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (BeanInstance.getBeanInstances(m_mainKFPerspective.
getCurrentTabIndex()).size() == 0) {
return;
}
if (!Utils.getDontShowDialog("weka.gui.beans.KnowledgeFlow.SequentialRunInfo")) {
JCheckBox dontShow = new JCheckBox("Do not show this message again");
Object[] stuff = new Object[2];
stuff[0] = "The order that data sources are launched in can be\n" +
"specified by setting a custom name for each data source that\n" +
"that includes a number. E.g. \"1:MyArffLoader\". To set a name,\n" +
"right-click over a data source and select \"Set name\"\n\n" +
"If the prefix is not specified, then the order of execution\n" +
"will correspond to the order that the components were added\n" +
"to the layout. Note that it is also possible to prevent a data\n" +
"source from executing by prefixing its name with a \"!\". E.g\n" +
"\"!:MyArffLoader\"";
stuff[1] = dontShow;
JOptionPane.showMessageDialog(KnowledgeFlowApp.this, stuff,
"Sequential execution information", JOptionPane.OK_OPTION);
if (dontShow.isSelected()) {
try {
Utils.setDontShowDialog("weka.gui.beans.KnowledgeFlow.SequentialRunInfo");
} catch (Exception ex) {
// quietly ignore
}
}
}
runFlow(true);
}
});
m_stopB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH +
"shape_square.png")));
m_stopB.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 0));
m_stopB.setToolTipText("Stop all execution");
Image tempI = loadImage(BeanVisual.ICON_PATH + "cursor.png");
m_pointerB = new JButton(new ImageIcon(tempI));
m_pointerB.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
m_pointerB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
m_toolBarBean = null;
m_mode = NONE;