📄 digraph.java
字号:
// file: DiGraph.java//// import java libraries//import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;import java.util.*;import java.io.*;import java.lang.*;import java.net.*;public class DiGraph extends JFrame implements ActionListener, MouseListener, MouseMotionListener, Constants { // --------------------------------------------------- // // declare class member data // // --------------------------------------------------- // keep track the curren vertex in focus // public Vertex systemVertex = null; public Vertex inVertex = null; public Vertex outVertex = null; public Vertex initVertexFocus = null; public Vertex cfgVertexFocus = null; public Vertex currVertexFocus = null; // differentiate between parent and child // public Vertex vertexParent = null; public Vertex vertexChild = null; // various types of been in the work area // public Vector vertices = null; public Vector coeffLabels = null; public Vector dataLabels = null; // flag that enables insertion and removal of arcs // public boolean enableArcInsertion = false; public boolean enableArcDeletion = false; // flag that enables insertion and removal of Component // public boolean enableCompDeletion = false; // flag that determines if input block exists // public boolean inputBlockExist = false; // flag that determines if output block exists // public boolean outputBlockExist = false; // target of the front end for output data type // public String targetStr = null; // input data type // public String inputDataStr = SAMPLED_DATA_STR; // current save status flag // public boolean saveWork = false; // vector of selected vertices // public Vector selectedVertices = null; // clipboard to handle things like cut, copy and paste // public Vector clipboard = null; // hash tables for quick reference // public Hashtable tagToVertex = null; // holds the maximum width and height of the scroller // public int maxWidth = WORKAREA_WIDTH; public int maxHeight = WORKAREA_HEIGHT; // holds the current location of the mouse // public int mouseXloc = 0; public int mouseYloc = 0; public int line_index = 0; // border for the viewport of the scrollpane // public Border border = null; // the label of the vertex that has been selected form the tool bar // public String currVertexLabel= null; // record the maximum number of inputs generated // public int maxInputVertices = 0; // algorithm association for the processes // public Association currAssociation = null; // maximum width and height of the work area // public int loadWidthMax = Integer.MIN_VALUE; public int loadHeightMax = Integer.MIN_VALUE; // input/output block type and impl // public int iotype = -1; public int ioimpl = -1; // varaible name in input block // public String inputVariable = null; // varaible name in output block // public String outputVariable = null; // creates a fram to manipulate the configuration options // public JFrame config = null; // textfields and labels for the connector properties // public JLabel toLabel = null; public JLabel fromLabel = null; public JLabel nameLabel = null; public JTextField toField = null; public JTextField fromField = null; public JTextField nameField = null; // main menu for functionality // public MainMenu mainMenu = null; // work area to drag and drop components // public WorkArea workArea = null; // paramenet file to be written to // public File paramFile = null; // scroll bars for the work area // public JScrollPane scroller = null; // declare the popup menu objects // public JPopupMenu popup = null; public JMenuItem menuItem = null; // default strings for the popup menus // public String ordering = null; public String delete = null; public String expand = null; public String configuration = null; public String label = null; public String apply = null; public String update = null; public String cancel = null; public String saveApprove = null; public String loadApprove = null; // default number for duration // public double frame_duration = 0.01; public double signal_duration = 0.1; public double sample_frequency = 8000.0; // data object for reading the algorithm resource file // public Data data = null; public Parser parser = null; // --------------------------------------------------- // // declare class constructors // // --------------------------------------------------- // method: DiGraph // // arguments: none // returns : none // public DiGraph(String title) { // invoke the parent default constructor // super(title); //instantiate the data class // data = new Data(); // run the parser // parser = new Parser(data); // initialize the vectors data members // vertices = new Vector(100, 50); coeffLabels = new Vector(100, 50); dataLabels = new Vector(100, 50); clipboard = new Vector(10, 10); selectedVertices = new Vector(100, 50); // initialize the hashtables // tagToVertex = new Hashtable(50); // instantiate the process algorithm association // currAssociation = new Association(); // initialize the popup menu strings // ordering = new String("Ordering"); delete = new String("Delete"); configuration = new String("Configuration"); // create the popup menu for the process vertex // popup = new JPopupMenu(); menuItem = new JMenuItem(configuration); menuItem.addActionListener(this); popup.add(menuItem); popup.addSeparator(); menuItem = new JMenuItem(ordering); menuItem.addActionListener(this); popup.add(menuItem); menuItem = new JMenuItem(delete); menuItem.addActionListener(this); popup.add(menuItem); // set the font of the popup menu // popup.setFont(newCoeffFont); // create the menu to control functionality // mainMenu = new MainMenu(this); // create a work area to drag and drop components // workArea = new WorkArea(vertices, this); workArea.addMouseListener(this); workArea.addMouseMotionListener(this); // add scroll panes to the workarea // scroller = new JScrollPane(workArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); // set the dimensions of the scroller // scroller.setPreferredSize(new Dimension(MAX_WIDTH, MAX_HEIGHT)); // add the components // this.getContentPane().add(mainMenu, BorderLayout.NORTH); this.getContentPane().add(scroller, BorderLayout.CENTER); mainMenu.add_components(); // create and initialize input configuration vertex // inVertex = new Vertex("system", ALGORITHM, NONE); inVertex.association = "AudioFrontEnd"; // to simplify the creation, the data vectors will be trimmed to // only include the transform we're looking at and saved into // these three vectors for use in a bit // Vector labels2 = new Vector(5,5); Vector types2 = new Vector(5,5); Vector values2 = new Vector(5,5); for(int j=data.association.indexOf(inVertex.association); j <= data.association.lastIndexOf(inVertex.association); j++) { if(j != -1) { labels2.add(data.name.get(j)); types2.add(data.type.get(j)); values2.add(data.values.get(j)); } } // initialize the vertex to the default values for its type // inVertex.initializeConfig(labels2, values2, types2, inVertex.association, data); // create and initialize output configuration vertex // outVertex = new Vertex("system", ALGORITHM, NONE); outVertex.association = "Audio_Output"; // to simplify the creation, the data vectors will be trimmed to // only include the transform we're looking at and saved into // these three vectors for use in a bit // Vector labels3 = new Vector(5,5); Vector types3 = new Vector(5,5); Vector values3 = new Vector(5,5); for(int j=data.association.indexOf(outVertex.association); j <= data.association.lastIndexOf(outVertex.association); j++) { if(j != -1) { labels3.add(data.name.get(j)); types3.add(data.type.get(j)); values3.add(data.values.get(j)); } } // initialize the vertex to the default values for its type // outVertex.initializeConfig(labels3, values3, types3, outVertex.association, data); } // method: resetVertexFocus // // arguments: none // return: none // // resets the parent and child relationships // public void resetVertexFocus() { // reset the parent and child focus // vertexChild = null; vertexParent = null; // reset the current vertex selected // initVertexFocus = null; currVertexFocus = null; // reset the arc enables // enableArcInsertion = false; enableArcDeletion = false; // reset component enables // enableCompDeletion = false; // repaint the workarea // workArea.repaint(); } // method: updateVertexFocus // // arguments: // MouseEvent e: (input) input mouse event // return: none // // updates the parent and child relationships // public void updateVertexFocus(MouseEvent e) { // check to make sure that the vertex parent is valid // if (vertexParent == null) { // highligh the current vertex parent // vertexParent = (Vertex)e.getSource(); } // initialize the child if the vertex parent is valid // else { // initialize the child of the connection // vertexChild = (Vertex)e.getSource(); } } // method: createAlgorithm // // arguments: // String algorithmstr: name of the algorithm that fired the event // returns: none // // this method creates an algorithm object // public void createAlgorithm(String algorithmstr) { // determine which algorithm fired the event // int action = data.association.indexOf(algorithmstr); // if the action is found in the list of transforms // if (action != -1) { String image_name = null; String image_association= null; String icon_name = null; // tells the program which transform it is looking to match // image_association = algorithmstr; // scans through the association until // it finds the largeIcon key // for(int j=data.association.indexOf(image_association); j <= data.association.lastIndexOf(image_association); j++) { if (j != -1) { if (((String)(data.name.get(j))).equals(ALGORITHM_ICON_BIG)) { // sets the image_name to the value held // in large icon // image_name = (String)data.values.elementAt(j); } if (((String)(data.name.get(j))).equals("iconName")) { // sets the image_name to the value held // in large icon // icon_name = (String)data.values.elementAt(j); } } } // check to see if the file exists. If it does not exist, // use a default image. // if(image_name != null) { File image_file = new File(image_name); if (image_file.exists() == false) image_name = ALGORITHM_DEFAULT; } else { image_name = ALGORITHM_DEFAULT; } // create the vertex for the work area // ImageIcon vertex_icon = new ImageIcon(image_name); if(image_association.equals("FourierTransform")) { image_name = GUI_PATH +"/lib/images/isip_transform_builder/icons/algorithm_00.gif"; vertex_icon = new ImageIcon(image_name); } Vertex vertex = new Vertex(vertex_icon , ALGORITHM); vertex.setVertexName(algorithmstr); if (algorithmstr.length() > 4) { vertex.setText(algorithmstr.substring(0, 4)); } else { vertex.setText(algorithmstr); } if(algorithmstr.equals("Generator")) { vertex.setText(""); vertex.setVertexImpl(INPUT); } if(algorithmstr.equals("FilterBank")) { vertex.setText("FilB"); } if(image_association.equals("AudioFrontEnd")) { if(!inputBlockExist) inputBlockExist = true; else { JFrame frame = new JFrame("Warning"); JOptionPane.showMessageDialog(frame, "An input** block is already present."); // Create an instance of java.awt.Cursor Cursor c = new Cursor ( Cursor.HAND_CURSOR ); // Set cursor for the frame component this.setCursor (c); return; } } if(icon_name != null) { vertex.setText(icon_name); vertex.setIconName(icon_name); } // to simplify the creation, the data vectors will be // trimmed to only include the transform we're looking // at and saved into these three vectors for use in a // bit // Vector labels = new Vector(5,5); Vector types = new Vector(5,5); Vector values = new Vector(5,5); for(int j=data.association.indexOf(image_association); j <= data.association.lastIndexOf(image_association); j++) { if(j != -1) { labels.add(data.name.get(j));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -