// Copyright (c) 1995, 1996 Regents of the University of California. // All rights reserved. // // This software was developed by the Arcadia project // at the University of California, Irvine. // // Redistribution and use in source and binary forms are permitted // provided that the above copyright notice and this paragraph are // duplicated in all such forms and that any documentation, // advertising materials, and other materials related to such // distribution and use acknowledge that the software was developed // by the University of California, Irvine. The name of the // University may not be used to endorse or promote products derived // from this software without specific prior written permission. // THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED // WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. // File: EditorMenus.java // Classes: EditorMenus // Original Author: ics125b spring 1996 Modifications by kedar patankar // $Id: EditorMenus.java,v 1.5 1997/03/06 01:44:05 chandra Exp $ // Modified Authors : Dave Boatwright and Kevin Carlson // Date 23 Feb 1997 // Modified Authors : Fred DiPrizito // Date 3 MAR 1997 // Authors: Modified by Kevin Carlson and Dave Boatwright // Date 11 March 1997 package uci.graphedit; import java.util.Vector; import java.util.Enumeration; import java.awt.Menu; import java.awt.MenuItem; import java.awt.MenuBar; import java.awt.Event; /*Purpose: the purpose of this class is to create the menu on the windows and to handle all menu events. */ public class EditorMenus extends Object { private Editor _editor; private MenuBar menuBar; private Vector openDocumentNames; private Vector windowMenuItems; private int MAX_ITEMS = 5; private String defaultString="*****"; /* File Menu and its components */ private Menu fileMenu; private MenuItem newItem; private MenuItem openItem; private MenuItem closeItem; private MenuItem saveItem; private MenuItem saveasItem; private MenuItem printItem; private MenuItem exitItem; /* Edit Menu and its components */ private Menu editMenu; private MenuItem cutItem; private MenuItem copyItem; private MenuItem pasteItem; private MenuItem labelItem; private MenuItem deleteItem; /*View Menu and its submenus and components */ private Menu viewMenu; private Menu zoomMenu; private MenuItem zoomInItem; private MenuItem zoomOutItem; private Menu alignMenu; private MenuItem alignTopsItem; private MenuItem alignBottomsItem; private MenuItem alignLeftsItem; private MenuItem alignRightsItem; private Menu groupMenu; private MenuItem groupItem; private MenuItem ungroupItem; private MenuItem resizeItem; private MenuItem viewGcd; private MenuItem viewCd; /* Tools Menu and its submenus and componenets */ private Menu toolsMenu; private MenuItem optionsItem; /* Window Menu */ private Menu windowMenu; private MenuItem firstItem; private MenuItem secondItem; private MenuItem thirdItem; private MenuItem fourthItem; private MenuItem fifthItem; private MenuItem sepItem; private MenuItem moreItem; /* Help Menu and its componenets */ private Menu helpMenu; private MenuItem topicsItem; private MenuItem aboutItem; /* Now Construct the Menu Bar for the Editor */ public EditorMenus(Editor ce) { menuBar = new MenuBar(); _editor=ce; /* Initialize the file menu */ menuBar.add(fileMenu = new Menu("File")); fileMenu.add(newItem = new MenuItem("New")); fileMenu.add(openItem = new MenuItem("Open")); fileMenu.add(closeItem = new MenuItem("Close")); closeItem.disable(); fileMenu.addSeparator(); fileMenu.add(saveItem = new MenuItem("Save")); saveItem.disable(); fileMenu.add(saveasItem = new MenuItem("SaveAs")); saveasItem.disable(); fileMenu.addSeparator(); fileMenu.add(printItem = new MenuItem("Print")); printItem.disable(); fileMenu.addSeparator(); fileMenu.add(exitItem = new MenuItem("Exit")); /* Initialize the edit Menu */ menuBar.add(editMenu = new Menu("Edit")); editMenu.add(cutItem = new MenuItem("Cut")); cutItem.disable(); editMenu.add(copyItem = new MenuItem("Copy")); copyItem.disable(); editMenu.add(pasteItem = new MenuItem("Paste")); pasteItem.disable(); editMenu.addSeparator(); editMenu.add(deleteItem = new MenuItem("Delete")); editMenu.addSeparator(); editMenu.add(labelItem = new MenuItem("Labels")); /* Initialize the view Menu */ menuBar.add(viewMenu = new Menu("View")); viewMenu.add(zoomMenu = new Menu("Zoom")); zoomMenu.add(zoomInItem = new MenuItem("Zoom In")); zoomInItem.disable(); zoomMenu.add(zoomOutItem = new MenuItem("Zoom Out")); zoomOutItem.disable(); viewMenu.addSeparator(); viewMenu.add(alignMenu = new Menu("Align")); alignMenu.add(alignTopsItem = new MenuItem("Tops")); alignMenu.add(alignBottomsItem = new MenuItem("Bottoms")); alignMenu.add(alignLeftsItem = new MenuItem("Lefts")); alignMenu.add(alignRightsItem = new MenuItem("Rights")); viewMenu.add(groupMenu = new Menu("Group")); groupMenu.add(groupItem = new MenuItem("Group Items")); groupItem.disable(); groupMenu.add(ungroupItem = new MenuItem("Ungroup Items")); ungroupItem.disable(); viewMenu.add(resizeItem = new MenuItem("Resize")); // add the view current Gcd manu item viewMenu.add(viewGcd = new MenuItem("Show GCD")); // add the view current cd manu item viewMenu.add(viewCd = new MenuItem("Show CD")); /* Initialise Tools Menu */ menuBar.add(toolsMenu = new Menu("Tools")); toolsMenu.add(optionsItem = new MenuItem("Options")); optionsItem.disable(); /* Initialise Window Menu */ menuBar.add(windowMenu=new Menu("Window")); firstItem=new MenuItem(defaultString); secondItem=new MenuItem(defaultString); thirdItem=new MenuItem(defaultString); fourthItem=new MenuItem(defaultString); fifthItem=new MenuItem(defaultString); moreItem=new MenuItem("Windows"); // sepItem=new MenuItem("-"); openDocumentNames=new Vector(); windowMenuItems=new Vector(MAX_ITEMS); windowMenuItems.addElement(firstItem); windowMenuItems.addElement(secondItem); windowMenuItems.addElement(thirdItem); windowMenuItems.addElement(fourthItem); windowMenuItems.addElement(fifthItem); windowMenu.add(moreItem); /* Initialize the help menu */ menuBar.add(helpMenu = new Menu("Help")); menuBar.setHelpMenu(helpMenu); helpMenu.add(topicsItem = new MenuItem("Contents ..")); helpMenu.addSeparator(); helpMenu.add(aboutItem = new MenuItem("About")); _editor.setMenuBar(menuBar); }/* constructor */ public void refresh(){flushWindowTable();} public void refresh(String s) { if(openDocumentNames.contains(s)) openDocumentNames.removeElement(s); else openDocumentNames.addElement(s); if(openDocumentNames.size()<=0) { saveItem.disable(); closeItem.disable(); } else { saveItem.enable(); closeItem.enable(); } flushWindowTable(); flushMenuItems(); } public void flushWindowTable() { Enumeration items=windowMenuItems.elements(); for(int i=0;i0) windowMenu.remove(0); Enumeration items=windowMenuItems.elements(); while(items.hasMoreElements()) { MenuItem m=(MenuItem)items.nextElement(); if(m.getLabel().equals(defaultString)) break; else windowMenu.add(m); } /* It seems there is a bug in windows NT j++. countItems() doesn't provide correct information. It doesn't count separators */ // windowMenu.addSeparator(); windowMenu.add(moreItem); } /** * Method : handleMenuEvent * Purpose : To handle all menu events * Note : This function is called from sampleEditorWindows * : handleMenuEvent **/ public boolean handleMenuEvent(Event e) { Document document = _editor.curDocument(); Action act=null; if (e.target==newItem) act=new ActionNew(_editor); else if (e.target == openItem) act = new ActionOpen(_editor); else if (e.target == saveItem) act = new ActionSave(_editor,document); else if(e.target==closeItem) act=new ActionClose(_editor,document); else if (e.target == exitItem) act = new ActionQuit(_editor); else if (e.target == deleteItem) act = new ActionDispose(document); else if (e.target==labelItem) act = new ActionSetUmlAttr(_editor,document); else if (e.target==resizeItem) act = new ActionResizeItem(_editor); else if (e.target==viewCd) act = new ActionDisplayCd(document); else if (e.target==viewGcd) act = new ActionDisplayGcd(document); else if (e.target == alignTopsItem) act = new ActionAlign(ActionAlign.ALIGN_TOPS,document); else if (e.target == alignBottomsItem) act = new ActionAlign(ActionAlign.ALIGN_BOTTOMS,document); else if (e.target == alignLeftsItem) act = new ActionAlign(ActionAlign.ALIGN_LEFTS,document); else if (e.target == alignRightsItem) act = new ActionAlign(ActionAlign.ALIGN_RIGHTS,document); else if (e.target == aboutItem) act = new ActionShowAbout(_editor); else if (e.target == topicsItem) act = new ActionShowContent(_editor); else if (e.target == moreItem) act = new ActionShowDocuments(_editor,openDocumentNames); else return checkWindowMenu(_editor,e); _editor.executeAction(act, e); return true; } public boolean checkWindowMenu(Editor editor,Event e) { Enumeration items=windowMenuItems.elements(); for (int i=0;i0) s = s.substring(0,a); editor.showDocument(s); return true; } } return false; } } /* end class EditorMenus */