📄 knowledgeflow.java
字号:
public void mouseReleased(MouseEvent me) {
if (m_editElement != null && m_mode == MOVING) {
m_editElement = null;
revalidate();
m_beanLayout.repaint();
m_mode = NONE;
}
}
public void mouseClicked(MouseEvent me) {
BeanInstance bi = BeanInstance.findInstance(me.getPoint());
if (m_mode == ADDING || m_mode == NONE) {
// try and popup a context sensitive menu if we have
// been clicked over a bean.
if (bi != null) {
JComponent bc = (JComponent)bi.getBean();
if (((me.getModifiers() & InputEvent.BUTTON1_MASK)
!= InputEvent.BUTTON1_MASK) || me.isAltDown()) {
doPopup(me.getPoint(), bi, me.getX(), me.getY());
}
} else {
if (((me.getModifiers() & InputEvent.BUTTON1_MASK)
!= InputEvent.BUTTON1_MASK) || me.isAltDown()) {
// find connections if any close to this point
int delta = 10;
deleteConnectionPopup(BeanConnection.
getClosestConnections(new Point(me.getX(), me.getY()),
delta), me.getX(), me.getY());
} else if (m_toolBarBean != null) {
// otherwise, if a toolbar button is active then
// add the component
addComponent(me.getX(), me.getY());
}
}
}
if (m_mode == CONNECTING) {
// turn off connecting points and remove connecting line
m_beanLayout.repaint();
Vector beanInstances = BeanInstance.getBeanInstances();
for (int i = 0; i < beanInstances.size(); i++) {
JComponent bean =
(JComponent)((BeanInstance)beanInstances.elementAt(i)).
getBean();
if (bean instanceof Visible) {
((Visible)bean).getVisual().setDisplayConnectors(false);
}
}
if (bi != null) {
boolean doConnection = false;
if (!(bi.getBean() instanceof BeanCommon)) {
doConnection = true;
} else {
// Give the target bean a chance to veto the proposed
// connection
if (((BeanCommon)bi.getBean()).
connectionAllowed(m_sourceEventSetDescriptor.getName())) {
doConnection = true;
}
}
if (doConnection) {
// attempt to connect source and target beans
BeanConnection bc =
new BeanConnection(m_editElement, bi,
m_sourceEventSetDescriptor);
}
m_beanLayout.repaint();
}
m_mode = NONE;
m_editElement = null;
m_sourceEventSetDescriptor = null;
}
}
});
m_beanLayout.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent me) {
if (m_editElement != null && m_mode == MOVING) {
ImageIcon ic = ((Visible)m_editElement.getBean()).
getVisual().getStaticIcon();
int width = ic.getIconWidth() / 2;
int height = ic.getIconHeight() / 2;
m_editElement.setX(m_oldX-width);
m_editElement.setY(m_oldY-height);
m_beanLayout.repaint();
// note the new points
m_oldX = me.getX(); m_oldY = me.getY();
}
}
public void mouseMoved(MouseEvent e) {
if (m_mode == CONNECTING) {
m_beanLayout.repaint();
// note the new coordinates
m_oldX = e.getX(); m_oldY = e.getY();
}
}
});
String date = (new SimpleDateFormat("EEEE, d MMMM yyyy"))
.format(new Date());
m_logPanel.logMessage("Weka Knowledge Flow was written by Mark Hall");
m_logPanel.logMessage("Weka Knowledge Flow");
m_logPanel.logMessage("(c) 2002-2004 Mark Hall");
m_logPanel.logMessage("web: http://www.cs.waikato.ac.nz/~ml/");
m_logPanel.logMessage( date);
m_logPanel.statusMessage("Welcome to the Weka Knowledge Flow");
JPanel p1 = new JPanel();
p1.setLayout(new BorderLayout());
p1.setBorder(javax.swing.BorderFactory.createCompoundBorder(
javax.swing.BorderFactory.
createTitledBorder("Knowledge Flow Layout"),
javax.swing.BorderFactory.createEmptyBorder(0, 5, 5, 5)
));
final JScrollPane js = new JScrollPane(m_beanLayout);
p1.add(js, BorderLayout.CENTER);
setLayout(new BorderLayout());
add(p1, BorderLayout.CENTER);
m_beanLayout.setSize(1024, 768);
Dimension d = m_beanLayout.getPreferredSize();
m_beanLayout.setMinimumSize(d);
m_beanLayout.setMaximumSize(d);
m_beanLayout.setPreferredSize(d);
add(m_logPanel, BorderLayout.SOUTH);
setUpToolBars();
}
private Image loadImage(String path) {
Image pic = null;
java.net.URL imageURL = ClassLoader.getSystemResource(path);
if (imageURL == null) {
// System.err.println("Warning: unable to load "+path);
} else {
pic = Toolkit.getDefaultToolkit().
getImage(imageURL);
}
return pic;
}
/**
* Describe <code>setUpToolBars</code> method here.
*/
private void setUpToolBars() {
JPanel toolBarPanel = new JPanel();
toolBarPanel.setLayout(new BorderLayout());
// first construct the toolbar for saving, loading etc
JToolBar fixedTools = new JToolBar();
fixedTools.setOrientation(JToolBar.VERTICAL);
m_saveB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH
+"Save24.gif")));
m_saveB.setToolTipText("Save layout");
m_loadB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH
+"Open24.gif")));
m_stopB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH
+"Stop24.gif")));
m_helpB = new JButton(new ImageIcon(loadImage(BeanVisual.ICON_PATH
+"Help24.gif")));
m_stopB.setToolTipText("Stop all execution");
m_loadB.setToolTipText("Load layout");
m_helpB.setToolTipText("Display help");
Image tempI = loadImage(BeanVisual.ICON_PATH+"Pointer.gif");
m_pointerB = new JToggleButton(new ImageIcon(tempI));
m_pointerB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
m_toolBarBean = null;
m_mode = NONE;
setCursor(Cursor.
getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
});
m_toolBarGroup.add(m_pointerB);
fixedTools.add(m_pointerB);
fixedTools.add(m_saveB);
fixedTools.add(m_loadB);
fixedTools.add(m_stopB);
Dimension dP = m_saveB.getPreferredSize();
Dimension dM = m_saveB.getMaximumSize();
fixedTools.setFloatable(false);
m_pointerB.setPreferredSize(dP);
m_pointerB.setMaximumSize(dM);
toolBarPanel.add(fixedTools, BorderLayout.WEST);
JToolBar fixedTools2 = new JToolBar();
fixedTools2.setOrientation(JToolBar.VERTICAL);
fixedTools2.setFloatable(false);
fixedTools2.add(m_helpB);
m_helpB.setPreferredSize(dP);
m_helpB.setMaximumSize(dP);
toolBarPanel.add(fixedTools2, BorderLayout.EAST);
m_saveB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveLayout();
}
});
m_loadB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loadLayout();
}
});
m_stopB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Vector components = BeanInstance.getBeanInstances();
for (int i = 0; i < components.size(); i++) {
Object temp = ((BeanInstance)components.elementAt(i)).getBean();
if (temp instanceof BeanCommon) {
((BeanCommon)temp).stop();
}
}
}
});
m_helpB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
popupHelp();
}
});
final int STANDARD_TOOLBAR = 0;
final int WEKAWRAPPER_TOOLBAR = 1;
int toolBarType = STANDARD_TOOLBAR;
// set up wrapper toolbars
for (int i = 0; i < TOOLBARS.size(); i++) {
Vector tempBarSpecs = (Vector)TOOLBARS.elementAt(i);
// name for the tool bar
String tempBarName = (String)tempBarSpecs.elementAt(0);
// Used for weka leaf packages
Box singletonHolderPanel = null;
// name of the bean component to handle this class of weka algorithms
String tempBeanCompName = (String)tempBarSpecs.elementAt(1);
// a JPanel holding an instantiated bean + label ready to be added
// to the current toolbar
JPanel tempBean;
// the root package for weka algorithms
String rootPackage = "";
weka.gui.HierarchyPropertyParser hpp = null;
// Is this a wrapper toolbar?
if (tempBeanCompName.compareTo("null") != 0) {
tempBean = null;
toolBarType = WEKAWRAPPER_TOOLBAR;
rootPackage = (String)tempBarSpecs.elementAt(2);
hpp = (weka.gui.HierarchyPropertyParser)tempBarSpecs.elementAt(3);
try {
Beans.instantiate(null, tempBeanCompName);
} catch (Exception ex) {
// ignore
System.err.println("Failed to instantiate: "+tempBeanCompName);
break;
}
} else {
toolBarType = STANDARD_TOOLBAR;
}
// a toolbar to hold buttons---one for each algorithm
JToolBar tempToolBar = new JToolBar();
// System.err.println(tempToolBar.getLayout());
// tempToolBar.setLayout(new FlowLayout());
int z = 2;
if (toolBarType == WEKAWRAPPER_TOOLBAR) {
if (!hpp.goTo(rootPackage)) {
System.err.println("**** Failed to locate root package in tree ");
System.exit(1);
}
String [] primaryPackages = hpp.childrenValues();
for (int kk = 0; kk < primaryPackages.length; kk++) {
hpp.goToChild(primaryPackages[kk]);
// check to see if this is a leaf - if so then there are no
// sub packages
if (hpp.isLeafReached()) {
if (singletonHolderPanel == null) {
singletonHolderPanel = Box.createHorizontalBox();
singletonHolderPanel.setBorder(javax.swing.BorderFactory.
createTitledBorder(tempBarName));
}
String algName = hpp.fullValue();
tempBean = instantiateToolBarBean(true,
tempBeanCompName, algName);
if (tempBean != null) {
// tempToolBar.add(tempBean);
singletonHolderPanel.add(tempBean);
}
hpp.goToParent();
} else {
// make a titledborder JPanel to hold all the schemes in this
// package
// JPanel holderPanel = new JPanel();
Box holderPanel = Box.createHorizontalBox();
holderPanel.setBorder(javax.swing.BorderFactory.
createTitledBorder(primaryPackages[kk]));
processPackage(holderPanel, tempBeanCompName, hpp);
tempToolBar.add(holderPanel);
}
}
if (singletonHolderPanel != null) {
tempToolBar.add(singletonHolderPanel);
singletonHolderPanel = null;
}
} else {
Box holderPanel = Box.createHorizontalBox();
holderPanel.setBorder(javax.swing.BorderFactory.
createTitledBorder(tempBarName));
for (int j = z; j < tempBarSpecs.size(); j++) {
tempBean = null;
tempBeanCompName = (String)tempBarSpecs.elementAt(j);
tempBean =
instantiateToolBarBean((toolBarType == WEKAWRAPPER_TOOLBAR),
tempBeanCompName, "");
if (tempBean != null) {
// set tool tip text (if any)
// setToolTipText(tempBean)
holderPanel.add(tempBean);
}
}
tempToolBar.add(holderPanel);
}
// ok, now create tabbed pane to hold this toolbar
JScrollPane tempJScrollPane = new JScrollPane(tempToolBar,
JScrollPane.VERTICAL_SCROLLBAR_NEVER,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
Dimension d = tempToolBar.getPreferredSize();
tempJScrollPane.setMinimumSize(new Dimension((int)d.getWidth(),
(int)(d.getHeight()+15)));
tempJScrollPane.setPreferredSize(new Dimension((int)d.getWidth(),
(int)(d.getHeight()+15)));
m_toolBars.addTab(tempBarName, null,
tempJScrollPane,
tempBarName);
}
toolBarPanel.add(m_toolBars, BorderLayout.CENTER);
// add(m_toolBars, BorderLayout.NORTH);
add(toolBarPanel, BorderLayout.NORTH);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -