Package edu.brown.gui

Source Code of edu.brown.gui.SchemaVisualization$MenuHandler

/**
*
*/
package edu.brown.gui;

import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.KeyEvent;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

import org.voltdb.catalog.Database;

import edu.brown.designer.DependencyGraph;
import edu.brown.designer.DesignerEdge;
import edu.brown.designer.DesignerInfo;
import edu.brown.designer.DesignerVertex;
import edu.brown.designer.generators.DependencyGraphGenerator;
import edu.brown.gui.common.GraphVisualizationPanel;
import edu.brown.utils.ArgumentsParser;
import edu.brown.utils.EventObservable;
import edu.brown.utils.EventObserver;

/**
* @author pavlo
*
*/
public class SchemaVisualization extends AbstractViewer {
    private static final long serialVersionUID = 7789644785781359023L;
   
    // ----------------------------------------------
    // WINDOW OPTIONS
    // ----------------------------------------------
    public static final Integer WINDOW_WIDTH  = 800;
    public static final Integer WINDOW_HEIGHT = 650;

    protected GraphVisualizationPanel<DesignerVertex, DesignerEdge> graph_panel;
   
    public SchemaVisualization(Database catalog_db) {
        super(new ArgumentsParser(), "DB Schema Visualizer");
        this.args.catalog_db = catalog_db;
        this.menuHandler = new SchemaVisualization.MenuHandler();
        this.init();
    }
   
    public SchemaVisualization(ArgumentsParser args) {
        super(args, "DB Schema Visualizer");
        this.menuHandler = new SchemaVisualization.MenuHandler();
        this.init();
    }
   
    @Override
    protected void viewerInit() {
        this.setBounds(50, 50, WINDOW_WIDTH, WINDOW_HEIGHT);
       
        // ----------------------------------------------
        // MENU
        // ----------------------------------------------
        JMenu menu;
        JMenuItem menuItem;
        JMenuBar menuBar = new JMenuBar();
   
        //
        // File Menu
        //
        menu = new JMenu("File");
        menu.getPopupMenu().setLightWeightPopupEnabled(false);
        menu.setMnemonic(KeyEvent.VK_F);
        menu.getAccessibleContext().setAccessibleDescription("File Menu");
        menuBar.add(menu);
   
        menuItem = new JMenuItem("Open Schema File");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
        menuItem.getAccessibleContext().setAccessibleDescription("Open Schema File");
        menuItem.addActionListener(this.menuHandler);
        menuItem.putClientProperty(MenuHandler.MENU_ID, MenuHandler.MENU_SCHEMA_OPEN);
        menu.add(menuItem);
         
        menu.addSeparator();
         
        menuItem = new JMenuItem("Quit", KeyEvent.VK_Q);
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK));
        menuItem.getAccessibleContext().setAccessibleDescription("Quit Program");
        menuItem.addActionListener(this.menuHandler);
        menuItem.putClientProperty(MenuHandler.MENU_ID, MenuHandler.MENU_QUIT);
        menu.add(menuItem);
       
        DependencyGraph dgraph = new DependencyGraph(this.args.catalog_db);
        try {
            new DependencyGraphGenerator(new DesignerInfo(args.catalogContext, args.workload, args.stats)).generate(dgraph);
            this.graph_panel = GraphVisualizationPanel.factory(dgraph);
        } catch (Exception ex) {
            ex.printStackTrace();
            System.exit(1);
        }
       
        this.graph_panel.EVENT_SELECT_VERTEX.addObserver(new EventObserver<DesignerVertex>() {
            public void update(EventObservable<DesignerVertex> o, DesignerVertex arg) {
                System.out.println("Vertex Selected: " + arg);
            }
        });
       
        this.setContentPane(this.graph_panel);
//        this.addComponentListener(this.graph_panel.resizer);
       
        this.setBounds(50, 50, WINDOW_WIDTH, WINDOW_HEIGHT);
        this.setJMenuBar(menuBar);
    }
   
    public ArgumentsParser getArguments() {
        return (this.args);
    }
   

   
    /**
     *
     */
    protected class MenuHandler extends AbstractMenuHandler {
        //
        // Schemas
        //
        public static final int MENU_SCHEMA_NEW                = 1;
        public static final int MENU_SCHEMA_OPEN               = 2;
        public static final int MENU_SCHEMA_SAVE               = 3;
        public static final int MENU_QUIT                      = 4;
        
        public void actionPerformed(ActionEvent e) {
            JMenuItem source = (JMenuItem)(e.getSource());
            //
            // Process the event
            //
            Integer id = (Integer)source.getClientProperty(MENU_ID);
            switch (id) {
                // --------------------------------------------------------
                // OPEN SCHEMA FILE
                // --------------------------------------------------------
                case (MENU_SCHEMA_OPEN): {
                    break;
                }
                // --------------------------------------------------------
                // QUIT
                // --------------------------------------------------------
                case (MENU_QUIT): {
                    SchemaVisualization.this.setVisible(false);
                    System.exit(0);
                    break;
                }
                // --------------------------------------------------------
                // UNKNOWN
                // --------------------------------------------------------
                default:
                    System.err.println("Invalid Menu Action: " + source.getName());
            } // SWITCH
        }
        public void itemStateChanged(ItemEvent e) {
            JMenuItem source = (JMenuItem)(e.getSource());
            String s = "Item event detected.\n"
                       + "    Event source: " + source.getText()
                       + " (an instance of " + source.getClass().getName() + ")\n"
                       + "    New state: "
                       + ((e.getStateChange() == ItemEvent.SELECTED) ?
                         "selected":"unselected") + "\n\n";
            System.err.println(s);
         }
    } // END CLASS
   
    /**
     * @param args
     */
    public static void main(final String[] vargs) throws Exception {
        final ArgumentsParser args = ArgumentsParser.load(vargs);
       
        //edu.uci.ics.jung.samples.TreeLayoutDemo.main(args);
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                SchemaVisualization gui = new SchemaVisualization(args);
                gui.setVisible(true);
            } // RUN
         });
    }

}
TOP

Related Classes of edu.brown.gui.SchemaVisualization$MenuHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.