⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 knowledgeflowapp.java

📁 代码是一个分类器的实现,其中使用了部分weka的源代码。可以将项目导入eclipse运行
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/* *    This program is free software; you can redistribute it and/or modify *    it under the terms of the GNU General Public License as published by *    the Free Software Foundation; either version 2 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 General Public License for more details. * *    You should have received a copy of the GNU General Public License *    along with this program; if not, write to the Free Software *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//* *    KnowledgeFlowApp.java *    Copyright (C) 2005 Mark Hall * */package weka.gui.beans;import weka.core.Memory;import weka.core.Utils;import weka.core.SerializedObject;import weka.core.xml.KOML;import weka.gui.ExtensionFileFilter;import weka.gui.ListSelectorDialog;import weka.gui.LogPanel;import weka.gui.LookAndFeel;import weka.gui.GenericObjectEditor;import weka.gui.GenericPropertiesCreator;import weka.gui.HierarchyPropertyParser;import weka.gui.beans.xml.XMLBeans;import weka.gui.visualize.PrintablePanel;import java.io.OutputStream;import java.io.InputStream;import java.io.FileOutputStream;import java.io.FileInputStream;import java.io.ObjectOutputStream;import java.io.ObjectInputStream;import java.io.LineNumberReader;import java.io.InputStreamReader;import java.io.File;import java.io.IOException;import java.lang.reflect.Method;import java.util.Enumeration;import java.util.StringTokenizer;import java.util.Vector;import java.util.TreeMap;import java.util.Iterator;import java.util.Properties;import java.util.Enumeration;import java.util.Date;import java.util.Hashtable;import java.text.SimpleDateFormat;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.Box;import javax.swing.JFrame;import javax.swing.JWindow;import javax.swing.JButton;import javax.swing.JToggleButton;import javax.swing.JButton;import javax.swing.DefaultListModel;import javax.swing.JList;import javax.swing.JLabel;import javax.swing.JComponent;import javax.swing.JPopupMenu;import javax.swing.JMenuItem;import javax.swing.JTabbedPane;import javax.swing.JToolBar;import javax.swing.JScrollPane;import javax.swing.ButtonGroup;import javax.swing.ButtonModel;import javax.swing.ImageIcon;import javax.swing.SwingConstants;import javax.swing.JFileChooser;import javax.swing.JTextArea;import javax.swing.filechooser.FileFilter;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Cursor;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Dimension;import java.awt.event.MouseEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseMotionAdapter;import java.awt.Point;import java.awt.Font;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.InputEvent;import java.awt.Image;import java.awt.Toolkit;import java.awt.Insets;import java.awt.Component;import java.awt.FontMetrics;import java.beans.Customizer;import java.beans.EventSetDescriptor;import java.beans.Beans;import java.beans.PropertyDescriptor;import java.beans.MethodDescriptor;import java.beans.PropertyChangeListener;import java.beans.PropertyChangeEvent;import java.beans.beancontext.*;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.IntrospectionException;/** * Main GUI class for the KnowledgeFlow * * @author Mark Hall * @version  $Revision: 1.14 $ * @since 1.0 * @see JPanel * @see PropertyChangeListener */public class KnowledgeFlowApp extends JPanel implements PropertyChangeListener {  /**   * Location of the property file for the KnowledgeFlowApp   */  protected static String PROPERTY_FILE = "weka/gui/beans/Beans.props";  /** Contains the editor properties */  private static Properties BEAN_PROPERTIES;  /**   * Holds the details needed to construct button bars for various supported   * classes of weka algorithms/tools    */  private static Vector TOOLBARS = new Vector();  /** Loads the configuration property file */  static {    // Allow a properties file in the current directory to override    try {      BEAN_PROPERTIES = Utils.readProperties(PROPERTY_FILE);      java.util.Enumeration keys =        (java.util.Enumeration)BEAN_PROPERTIES.propertyNames();      if (!keys.hasMoreElements()) {        throw new Exception( "Could not read a configuration file for the bean\n"         +"panel. An example file is included with the Weka distribution.\n"         +"This file should be named \"" + PROPERTY_FILE + "\" and\n"         +"should be placed either in your user home (which is set\n"         + "to \"" + System.getProperties().getProperty("user.home") + "\")\n"         + "or the directory that java was started from\n");      }    } catch (Exception ex) {      JOptionPane.showMessageDialog(null,				    ex.getMessage(),				    "KnowledgeFlow",				    JOptionPane.ERROR_MESSAGE);    }    try {      TreeMap wrapList = new TreeMap();      GenericPropertiesCreator creator = new GenericPropertiesCreator();      creator.execute(false);      /* now process the keys in the GenericObjectEditor.props. For each       key that has an entry in the Beans.props associating it with a      bean component a button tool bar will be created */      Properties GEOProps = 	//Utils.readProperties("weka/gui/GenericObjectEditor.props");      creator.getOutputProperties();      Enumeration en = GEOProps.propertyNames();      while (en.hasMoreElements()) {	String geoKey = (String)en.nextElement();	// try to match this key with one in the Beans.props file	String beanCompName = BEAN_PROPERTIES.getProperty(geoKey);	if (beanCompName != null) {	  // add details necessary to construct a button bar for this class	  // of algorithms	  Vector newV = new Vector();	  // check for a naming alias for this toolbar	  String toolBarNameAlias = 	    BEAN_PROPERTIES.getProperty(geoKey+".alias");	  String toolBarName = (toolBarNameAlias != null) ?	    toolBarNameAlias :	    geoKey.substring(geoKey.lastIndexOf('.')+1, geoKey.length());          // look for toolbar ordering information for this wrapper type          String order =             BEAN_PROPERTIES.getProperty(geoKey+".order");          Integer intOrder = (order != null) ?            new Integer(order) :            new Integer(0);            	  // Name for the toolbar (name of weka algorithm class)	  newV.addElement(toolBarName);	  // Name of bean capable of handling this class of algorithm	  newV.addElement(beanCompName);	  // add the root package for this key	  String rootPackage = geoKey.substring(0, geoKey.lastIndexOf('.'));	  newV.addElement(rootPackage);	  // All the weka algorithms of this class of algorithm	  String wekaAlgs = GEOProps.getProperty(geoKey);          Hashtable roots = GenericObjectEditor.sortClassesByRoot(wekaAlgs);          Hashtable hpps = new Hashtable();          Enumeration enm = roots.keys();          while (enm.hasMoreElements()) {            String root = (String) enm.nextElement();            String classes = (String) roots.get(root);            weka.gui.HierarchyPropertyParser hpp =               new weka.gui.HierarchyPropertyParser();            hpp.build(classes, ", ");            //            System.err.println(hpp.showTree());            hpps.put(root, hpp);          }	  //------ test the HierarchyPropertyParser          /*  weka.gui.HierarchyPropertyParser hpp = 	    new weka.gui.HierarchyPropertyParser();	  hpp.build(wekaAlgs, ", ");	  System.err.println(hpp.showTree()); */	  // ----- end test the HierarchyPropertyParser          //	  newV.addElement(hpp); // add the hierarchical property parser	  newV.addElement(hpps); // add the hierarchical property parser	  StringTokenizer st = new StringTokenizer(wekaAlgs, ", ");	  while (st.hasMoreTokens()) {	    String current = st.nextToken().trim();	    newV.addElement(current);	  }          wrapList.put(intOrder, newV);          //	  TOOLBARS.addElement(newV);	}      }      Iterator keysetIt = wrapList.keySet().iterator();      while (keysetIt.hasNext()) {        Integer key = (Integer)keysetIt.next();        Vector newV = (Vector)wrapList.get(key);        if (newV != null) {          TOOLBARS.addElement(newV);        }      }    } catch (Exception ex) {      JOptionPane.showMessageDialog(null,          "Could not read a configuration file for the generic objecte editor"         +". An example file is included with the Weka distribution.\n"         +"This file should be named \"GenericObjectEditor.props\" and\n"         +"should be placed either in your user home (which is set\n"         + "to \"" + System.getProperties().getProperty("user.home") + "\")\n"         + "or the directory that java was started from\n",         "KnowledgeFlow",         JOptionPane.ERROR_MESSAGE);    }    try {      String standardToolBarNames = 	BEAN_PROPERTIES.	getProperty("weka.gui.beans.KnowledgeFlow.standardToolBars");      StringTokenizer st = new StringTokenizer(standardToolBarNames, ", ");       while (st.hasMoreTokens()) {	 String tempBarName = st.nextToken().trim();	 // construct details for this toolbar	 Vector newV = new Vector();	 // add the name of the toolbar	 newV.addElement(tempBarName);	 // indicate that this is a standard toolbar (no wrapper bean)	 newV.addElement("null");	 String toolBarContents = 	   BEAN_PROPERTIES.	   getProperty("weka.gui.beans.KnowledgeFlow."+tempBarName);	 StringTokenizer st2 = new StringTokenizer(toolBarContents, ", ");	 while (st2.hasMoreTokens()) {	   String tempBeanName = st2.nextToken().trim();	   newV.addElement(tempBeanName);	 }	 TOOLBARS.addElement(newV);       }           } catch (Exception ex) {      JOptionPane.showMessageDialog(null,				    ex.getMessage(),				    "KnowledgeFlow",				    JOptionPane.ERROR_MESSAGE);    }  }     /**   * Used for displaying the bean components and their visible   * connections   *   * @author <a href="mailto:mhall@cs.waikato.ac.nz">Mark Hall</a>   * @version $Revision: 1.14 $   * @since 1.0   * @see PrintablePanel   */  protected class BeanLayout extends PrintablePanel {    public void paintComponent(Graphics gx) {      super.paintComponent(gx);      BeanInstance.paintLabels(gx);      BeanConnection.paintConnections(gx);      //      BeanInstance.paintConnections(gx);      if (m_mode == CONNECTING) {	gx.drawLine(m_startX, m_startY, m_oldX, m_oldY);      } else if (m_mode == SELECTING) {        gx.drawRect((m_startX < m_oldX) ? m_startX : m_oldX,                     (m_startY < m_oldY) ? m_startY : m_oldY,                     Math.abs(m_oldX-m_startX), Math.abs(m_oldY-m_startY));      }    }    public void doLayout() {      super.doLayout();      Vector comps = BeanInstance.getBeanInstances();      for (int i = 0; i < comps.size(); i++) {	BeanInstance bi = (BeanInstance)comps.elementAt(i);	JComponent c = (JComponent)bi.getBean();	Dimension d = c.getPreferredSize();	c.setBounds(bi.getX(), bi.getY(), d.width, d.height);	c.revalidate();      }    }  }  // Used for measuring and splitting icon labels  // over multiple lines  FontMetrics m_fontM;  // constants for operations in progress  protected static final int NONE = 0;  protected static final int MOVING = 1;  protected static final int CONNECTING = 2;  protected static final int ADDING = 3;  protected static final int SELECTING = 4;  // which operation is in progress  private int m_mode = NONE;  /** the extension for the user components, when serialized to XML */  protected final static String USERCOMPONENTS_XML_EXTENSION = ".xml";    /**   * Button group to manage all toolbar buttons   */  private ButtonGroup m_toolBarGroup = new ButtonGroup();  /**   * Holds the selected toolbar bean   */  private Object m_toolBarBean;  /**   * The layout area   */  private BeanLayout m_beanLayout = new BeanLayout();  /**   * Tabbed pane to hold tool bars   */  private JTabbedPane m_toolBars = new JTabbedPane();  /**   * Stuff relating to user created meta beans   */  private JToolBar m_userToolBar = null;  private Box m_userBoxPanel = null;  private Vector m_userComponents = new Vector();  private boolean m_firstUserComponentOpp = true;  private JToggleButton m_pointerB;  private JButton m_saveB;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -