📄 knowledgeflowapp.java
字号:
m_toolBarBean = copy; } } else { m_toolBarBean = Beans.instantiate(null, tempName); } if (m_toolBarBean instanceof WekaWrapper) { Object wrappedAlg = ((WekaWrapper)tempBN).getWrappedAlgorithm(); ((WekaWrapper)m_toolBarBean). setWrappedAlgorithm(wrappedAlg.getClass().newInstance()); // tempButton2.setSelected(false); } if (changeCursor) { setCursor(Cursor. getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); m_mode = ADDING; } } catch (Exception ex) { System.err. println("Problem adding bean to data flow layout"); } } }); if (tempBean instanceof MetaBean) { tempButton.setToolTipText("Hold down shift and click to remove"); m_userComponents.add(tempBean); } else { // set tool tip text from global info if supplied String summary = getGlobalInfo(tempBean); if (summary != null) { int ci = summary.indexOf('.'); if (ci != -1) { summary = summary.substring(0, ci + 1); } tempButton.setToolTipText(summary); } } //return tempBean; return tempP; } private JPanel multiLineLabelPanel(String sourceL, int splitWidth) { JPanel jp = new JPanel(); Vector v = new Vector(); int labelWidth = m_fontM.stringWidth(sourceL); if (labelWidth < splitWidth) { v.addElement(sourceL); } else { // find mid point int mid = sourceL.length() / 2; // look for split point closest to the mid int closest = sourceL.length(); int closestI = -1; for (int i = 0; i < sourceL.length(); i++) { if (sourceL.charAt(i) < 'a') { if (Math.abs(mid - i) < closest) { closest = Math.abs(mid - i); closestI = i; } } } if (closestI != -1) { String left = sourceL.substring(0, closestI); String right = sourceL.substring(closestI, sourceL.length()); if (left.length() > 1 && right.length() > 1) { v.addElement(left); v.addElement(right); } else { v.addElement(sourceL); } } else { v.addElement(sourceL); } } jp.setLayout(new GridLayout(v.size(), 1)); for (int i = 0; i < v.size(); i++) { JLabel temp = new JLabel(); temp.setFont(new Font("Monospaced", Font.PLAIN, 10)); temp.setText(" "+((String)v.elementAt(i))+" "); temp.setHorizontalAlignment(JLabel.CENTER); jp.add(temp); } return jp; } private void setUpUserToolBar() { m_userBoxPanel = Box.createHorizontalBox(); m_userBoxPanel.setBorder(javax.swing.BorderFactory. createTitledBorder("User")); m_userToolBar = new JToolBar(); m_userToolBar.add(m_userBoxPanel); JScrollPane tempJScrollPane = createScrollPaneForToolBar(m_userToolBar); // ok, now create tabbed pane to hold this toolbar m_toolBars.addTab("User", null, tempJScrollPane, "User created components"); } /** * Pop up a help window */ private void popupHelp() { final JButton tempB = m_helpB; try { tempB.setEnabled(false); InputStream inR = ClassLoader. getSystemResourceAsStream("weka/gui/beans/README_KnowledgeFlow"); StringBuffer helpHolder = new StringBuffer(); LineNumberReader lnr = new LineNumberReader(new InputStreamReader(inR)); String line; while ((line = lnr.readLine()) != null) { helpHolder.append(line+"\n"); } lnr.close(); final javax.swing.JFrame jf = new javax.swing.JFrame(); jf.getContentPane().setLayout(new java.awt.BorderLayout()); final JTextArea ta = new JTextArea(helpHolder.toString()); ta.setFont(new Font("Monospaced", Font.PLAIN, 12)); ta.setEditable(false); final JScrollPane sp = new JScrollPane(ta); jf.getContentPane().add(sp, java.awt.BorderLayout.CENTER); jf.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { tempB.setEnabled(true); jf.dispose(); } }); jf.setSize(600,600); jf.setVisible(true); } catch (Exception ex) { tempB.setEnabled(true); } } public void clearLayout() { BeanInstance.reset(m_beanLayout); BeanConnection.reset(); m_beanLayout.revalidate(); m_beanLayout.repaint(); } /** * Popup a context sensitive menu for the bean component * * @param pt holds the panel coordinates for the component * @param bi the bean component over which the user right clicked the mouse * @param x the x coordinate at which to popup the menu * @param y the y coordinate at which to popup the menu */ private void doPopup(Point pt, final BeanInstance bi, int x, int y) { final JComponent bc = (JComponent)bi.getBean(); final int xx = x; final int yy = y; int menuItemCount = 0; JPopupMenu beanContextMenu = new JPopupMenu(); beanContextMenu.insert(new JLabel("Edit", SwingConstants.CENTER), menuItemCount); menuItemCount++; if (bc instanceof MetaBean) { JMenuItem ungroupItem = new JMenuItem("Ungroup"); ungroupItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // ungroup bi.removeBean(m_beanLayout); Vector group = ((MetaBean)bc).getBeansInSubFlow(); Vector associatedConnections = ((MetaBean)bc).getAssociatedConnections(); ((MetaBean)bc).restoreBeans(); for (int i = 0; i < group.size(); i++) { BeanInstance tbi = (BeanInstance)group.elementAt(i); addComponent(tbi, false); tbi.addBean(m_beanLayout); } for (int i = 0; i < associatedConnections.size(); i++) { BeanConnection tbc = (BeanConnection)associatedConnections.elementAt(i); tbc.setHidden(false); } m_beanLayout.repaint(); } }); beanContextMenu.add(ungroupItem); menuItemCount++; // Add to user tab JMenuItem addToUserTabItem = new JMenuItem("Add to user tab"); addToUserTabItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addToUserToolBar((MetaBean)bi.getBean(), true); } }); beanContextMenu.add(addToUserTabItem); menuItemCount++; } JMenuItem deleteItem = new JMenuItem("Delete"); deleteItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { BeanConnection.removeConnections(bi); bi.removeBean(m_beanLayout); revalidate(); } }); beanContextMenu.add(deleteItem); menuItemCount++; try { //BeanInfo [] compInfo = null; //JComponent [] associatedBeans = null; Vector compInfo = new Vector(1); Vector associatedBeans = null; Vector outputBeans = null; Vector compInfoOutputs = null; if (bc instanceof MetaBean) { compInfo = ((MetaBean)bc).getBeanInfoSubFlow(); associatedBeans = ((MetaBean)bc).getBeansInSubFlow(); outputBeans = ((MetaBean)bc).getBeansInOutputs(); compInfoOutputs = ((MetaBean)bc).getBeanInfoOutputs(); } else { compInfo.add(Introspector.getBeanInfo(bc.getClass())); compInfoOutputs = compInfo; } final Vector tempAssociatedBeans = associatedBeans; if (compInfo == null) { System.err.println("Error"); } else { // System.err.println("Got bean info"); for (int zz = 0; zz < compInfo.size(); zz++) { final int tt = zz; final Class custClass = ((BeanInfo)compInfo.elementAt(zz)).getBeanDescriptor(). getCustomizerClass(); if (custClass != null) { // System.err.println("Got customizer class"); // popupCustomizer(custClass, bc); JMenuItem custItem = null; if (!(bc instanceof MetaBean)) { custItem = new JMenuItem("Configure..."); } else { String custName = custClass.getName(); BeanInstance tbi = (BeanInstance)associatedBeans.elementAt(zz); if (tbi.getBean() instanceof WekaWrapper) { custName = ((WekaWrapper)tbi.getBean()). getWrappedAlgorithm().getClass().getName(); } else { custName = custName.substring(0, custName.indexOf("Customizer")); } custName = custName. substring(custName.lastIndexOf('.')+1 , custName.length()); custItem = new JMenuItem("Configure: "+ custName); } custItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (bc instanceof MetaBean) { popupCustomizer(custClass, (JComponent)((BeanInstance)tempAssociatedBeans. elementAt(tt)).getBean()); } else { popupCustomizer(custClass, bc); } } }); beanContextMenu.add(custItem); menuItemCount++; } else { System.err.println("No customizer class"); } } Vector esdV = new Vector(); for (int i = 0; i < compInfoOutputs.size(); i++) { EventSetDescriptor [] temp = ((BeanInfo)compInfoOutputs.elementAt(i)).getEventSetDescriptors(); if (temp != null && temp.length > 0) { esdV.add(temp); } } // EventSetDescriptor [] esds = compInfo.getEventSetDescriptors(); // if (esds != null && esds.length > 0) { if (esdV.size() > 0) { beanContextMenu.insert(new JLabel("Connections", SwingConstants.CENTER), menuItemCount); menuItemCount++; } final Vector finalOutputs = outputBeans; for (int j = 0; j < esdV.size(); j++) { final int fj = j; String sourceBeanName=""; if (bc instanceof MetaBean) { Object sourceBean = ((BeanInstance)outputBeans.elementAt(j)).getBean(); if (sourceBean instanceof WekaWrapper) { sourceBeanName = ((WekaWrapper)sourceBean). getWrappedAlgorithm().getClass().getName(); } else { sourceBeanName = sourceBean.getClass().getName(); } sourceBeanName = sourceBeanName. substring(sourceBeanName.lastIndexOf('.')+1, sourceBeanName.length()); sourceBeanName += ": "; } EventSetDescriptor [] esds = (EventSetDescriptor [])esdV.elementAt(j); for (int i = 0; i < esds.length; i++) { // System.err.println(esds[i].getName()); // add each event name to the menu JMenuItem evntItem = new JMenuItem(sourceBeanName +esds[i].getName()); final EventSetDescriptor esd = esds[i]; // Check EventConstraints (if any) here boolean ok = true; if (bc instanceof EventConstraints) { ok = ((EventConstraints) bc).eventGeneratable(esd.getName()); } if (ok) { evntItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { connectComponents(esd, (bc instanceof MetaBean) ? ((BeanInstance)finalOutputs.elementAt(fj)) : bi, xx, yy); } }); } else { evntItem.setEnabled(false); } beanContextMenu.add(evntItem); menuItemCount++; } } } } catch (IntrospectionException ie) { ie.printStackTrace(); } // System.err.println("Just before look for other options"); // now look for other options for this bean if (bc instanceof UserRequestAcceptor) { Enumeration req = ((UserRequestAcceptor)bc).enumerateRequests(); if (req.hasMoreElements()) { beanContextMenu.insert(new JLabel("Actions", SwingConstants.CENTER), menuItemCount); menuItemCount++; } while (req.hasMoreElements()) { String tempS = (String)req.nextElement(); boolean disabled = false; // check to see if this item is currently disabled if (tempS.charAt(0) == '$') { tempS = tempS.substring(1, tempS.length()); disabled = true; } final String tempS2 = tempS; JMenuItem custItem = new JMenuItem(tempS2); custItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ((UserRequestAcceptor)bc).performRequest(tempS2); } });
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -