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

📄 toolfactory.java

📁 用Java开发的、实现类似Visio功能的应用程序源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/**
 *    $Id:ToolFactory.java $
 *
 *    Copyright 2004 ~ 2005  JingFei International Cooperation LTD. All rights reserved. *
 */
package com.jfimagine.jfdraw.gui;


import javax.swing.JMenu;
import javax.swing.JPopupMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JToolBar;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.KeyStroke;
import javax.swing.JSeparator;
import javax.swing.ButtonGroup;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JLabel;   
import javax.swing.ListCellRenderer;
import javax.swing.JList;
import javax.swing.JColorChooser;
                           	
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.Component;
import java.awt.GraphicsEnvironment;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;

import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

import com.jfimagine.jfdraw.action.ActionConst;
import com.jfimagine.jfdraw.gui.resource.CADResource;
import com.jfimagine.jfdraw.gui.GUIConst;
import com.jfimagine.jfdraw.gui.DrawAdapter;
import com.jfimagine.jfdraw.gui.DrawCanvas;

import com.jfimagine.jfdraw.draw.Selection;
import com.jfimagine.jfdraw.draw.GraphEventDispatcher;

import com.jfimagine.jfgraph.shape.base.AbstractShape;
import com.jfimagine.jfgraph.shape.base.ObjectList;
import com.jfimagine.jfgraph.shape.union.JFLayer;
import com.jfimagine.jfgraph.shape.decorate.FontFormat;
import com.jfimagine.jfgraph.shape.decorate.LineFormat;
import com.jfimagine.jfgraph.shape.decorate.FillFormat;
import com.jfimagine.jfgraph.shape.decorate.Arrow;

import com.jfimagine.jfdraw.gui.dialog.LineFormatDialog;
import com.jfimagine.jfdraw.gui.dialog.FontFormatDialog;
import com.jfimagine.jfdraw.gui.dialog.FillFormatDialog;
import com.jfimagine.jfdraw.gui.dialog.ArrowDialog;

import com.jfimagine.utils.commonutil.CommonUtil;

/**
 *  Tool factory is a class used to create menus, tool bars and other tools for cad drawing.
 *
 * @author     CookieMaker    
 *
 * @version $Revision: 1.00 $
 */  
public class ToolFactory{

   private static final String CMD_LINECOLOR_MODIFIER	="CMD_LineColor_Modifier";
   private static final String CMD_FONTCOLOR_MODIFIER	="CMD_FontColor_Modifier";
   private static final String CMD_FILLCOLOR_MODIFIER	="CMD_FillColor_Modifier";
   private static final String CMD_FILLCOLOR2_MODIFIER	="CMD_FillColor2_Modifier";
   private static final String CMD_FILLLINECOLOR_MODIFIER="CMD_FillLineColor_Modifier";
   

   /** two ruler radio menu item that will be checked dynamically*/
   private  static JRadioButtonMenuItem rulerEnglish;
   private  static JRadioButtonMenuItem rulerMetric;
   private  static JTextField	layerTextField;

   /**line format combo boxes*/   
   private static JComboBox	lineStyleCombo;
   private static JComboBox	lineWidthCombo;
   private static JButton	lineColorButton;
   
   /**font format combo boxes*/   
   private static JComboBox	fontNameCombo;
   private static JComboBox	fontStyleCombo;
   private static JComboBox	fontSizeCombo;
   private static JButton	fontColorButton;

   /**arrow format combo boxes*/   
   private static JComboBox	startArrowCombo;
   private static JComboBox	endArrowCombo;

   /**fill format combo boxes*/   
   private static JComboBox	fillStyleCombo;
   private static JButton	fillColorButton;
   private static JButton	fillColorButton2;
   private static JComboBox	fillLineStyleCombo;
   private static JButton	fillLineColorButton;

   /** Graph event dispatcher**/
   private GraphEventDispatcher m_graphEventDispatcher;
   
   /**Prevent triggering item state changed event**/
   private static boolean m_preventItemStateChanged=false;
   
   /** window menus **/
   private  static JMenu windowMenu;
   
   /** set the current the ruler is under metric or english
    *  @param isMetric True if metric, false english.
    */
   public void setIsMetricRuler(boolean isMetric){
   	if (rulerEnglish==null || rulerMetric==null)
   		return;
   		
   	rulerMetric.setSelected(isMetric);
   	rulerEnglish.setSelected(!isMetric);
   }

   /** set current layer name
    *  @param layerName  Current layername
    */
   public void setLayerName(String layerName){
   	layerTextField.setText(layerName);
   }

   /** get current layer name
    *  @return Current layername showed
    */
   public String getLayerName(){
   	return layerTextField.getText();
   }
   
   /** 
    * Append all internal window titles to window menu, so we can toggle these internal windows.
    *  @param titleList Title list of internal windows.
    */
   public void appendTitlesToWindowMenu(List titleList,ActionListener listener){
   	windowMenu.removeAll();
   	addWindowMenus(windowMenu,listener); 

	if (titleList==null || titleList.size()==0)
		return;
	
	windowMenu.add(new JSeparator());
	
	Iterator it	=titleList.iterator();
	while (it!=null && it.hasNext()){   	
		String title	=(String)it.next();
        	windowMenu.add(createMenuItem(title,"",(char)0,(char)0,"",ActionConst.CMD_WINDOW_TOGGLE,listener));
   	}
   }

  
   /**
     *   Create a main menu bar.
     */	
   public static JMenuBar createMenuBar(ActionListener listener) {
        JMenuBar mBar = new JMenuBar();
        
        mBar.add(createDocMenu(listener));
        mBar.add(createEditMenu(listener,false));
        mBar.add(createViewMenu(listener));
        mBar.add(createShapeMenu(listener));
        mBar.add(createDrawMenu(listener));
        mBar.add(createSetMenu(listener));
        mBar.add(createWindowMenu(listener));
        mBar.add(createHelpMenu(listener));
        
        return mBar;
   }
   
   //create document menu items.
   public static JMenu createDocMenu(ActionListener listener){
   	return createDocMenu(listener,false);
   }

   //create document menu items.
   public static JMenu createDocMenu(ActionListener listener,boolean hideExit){
   
        //A title FILE menu.
        JMenu docMenu = createMenu(CADResource.getString("menu.file.label"),
        			   CADResource.getChar("menu.file.mnemonic"),
        			   CADResource.getChar("menu.file.accelerator"),
        			   CADResource.getString("menu.file.keymask")
        			   );

        //new file,open file, save file, save as file menu items.
        docMenu.add(createMenuItem(CADResource.getString("menuitem.newfile.label"),
        			   "general/new16",
        			   CADResource.getChar("menuitem.newfile.mnemonic"),
        			   CADResource.getChar("menuitem.newfile.accelerator"),
        			   CADResource.getString("menuitem.newfile.keymask"),
        			   ActionConst.CMD_FILE_NEW,
        			   listener));
        docMenu.add(createMenuItem(CADResource.getString("menuitem.openfile.label"),
        			   "general/open16",
        			   CADResource.getChar("menuitem.openfile.mnemonic"),
        			   CADResource.getChar("menuitem.openfile.accelerator"),
        			   CADResource.getString("menuitem.openfile.keymask"),
        			   ActionConst.CMD_FILE_OPEN,
        			   listener));
        docMenu.add(createMenuItem(CADResource.getString("menuitem.openurlfile.label"),
        			   "general/open16",
        			   CADResource.getChar("menuitem.openurlfile.mnemonic"),
        			   CADResource.getChar("menuitem.openurlfile.accelerator"),
        			   CADResource.getString("menuitem.openurlfile.keymask"),
        			   ActionConst.CMD_FILE_OPENURL,
        			   listener));

        docMenu.add(new JSeparator());
        docMenu.add(createMenuItem(CADResource.getString("menuitem.savefile.label"),
        			   "general/save16",
        			   CADResource.getChar("menuitem.savefile.mnemonic"),
        			   CADResource.getChar("menuitem.savefile.accelerator"),
        			   CADResource.getString("menuitem.savefile.keymask"),
        			   ActionConst.CMD_FILE_SAVE,
        			   listener));
	//* demo        			   
        docMenu.add(createMenuItem(CADResource.getString("menuitem.saveasfile.label"),
        			   "general/save16",
        			   CADResource.getChar("menuitem.saveasfile.mnemonic"),
        			   CADResource.getChar("menuitem.saveasfile.accelerator"),
        			   CADResource.getString("menuitem.saveasfile.keymask"),
        			   ActionConst.CMD_FILE_SAVEAS,
        			   listener));
	//*/
	        			 
	//* trial version
        docMenu.add(createMenuItem(CADResource.getString("menuitem.saveasxmlfile.label"),
        			   CADResource.getChar("menuitem.saveasxmlfile.mnemonic"),
        			   CADResource.getChar("menuitem.saveasxmlfile.accelerator"),
        			   CADResource.getString("menuitem.saveasxmlfile.keymask"),
        			   ActionConst.CMD_FILE_SAVEASXML,
        			   listener));
	//*/        			   

        
        //* demo
        //An export menu.
        JMenu exportMenu = createMenu(CADResource.getString("menu.exporting.label"),
        			   CADResource.getChar("menu.exporting.mnemonic"),
        			   CADResource.getChar("menu.exporting.accelerator"),
        			   CADResource.getString("menu.exporting.keymask")
        			   );
        addExportMenus(exportMenu,listener,false);
        docMenu.add(exportMenu);


        docMenu.add(new JSeparator());

        docMenu.add(createMenuItem(CADResource.getString("menuitem.pagesetup.label"),
        			   CADResource.getChar("menuitem.pagesetup.mnemonic"),
        			   CADResource.getChar("menuitem.pagesetup.accelerator"),
        			   CADResource.getString("menuitem.pagesetup.keymask"),
        			   ActionConst.CMD_FILE_PAGESETUP,
        			   listener));

        docMenu.add(createMenuItem(CADResource.getString("menuitem.printpreview.label"),
        			   CADResource.getChar("menuitem.printpreview.mnemonic"),
        			   CADResource.getChar("menuitem.printpreview.accelerator"),
        			   CADResource.getString("menuitem.printpreview.keymask"),
        			   ActionConst.CMD_FILE_PRINTPREVIEW,
        			   listener));

        docMenu.add(createMenuItem(CADResource.getString("menuitem.print.label"),
        			   CADResource.getChar("menuitem.print.mnemonic"),
        			   CADResource.getChar("menuitem.print.accelerator"),
        			   CADResource.getString("menuitem.print.keymask"),
        			   ActionConst.CMD_FILE_PRINT,
        			   listener));

        //*/

	if (!hideExit){
        	docMenu.add(new JSeparator());

		//quit menu items.
        	docMenu.add(createMenuItem(CADResource.getString("menuitem.quit.label"),
        			   CADResource.getChar("menuitem.quit.mnemonic"),
        			   CADResource.getChar("menuitem.quit.accelerator"),
        			   CADResource.getString("menuitem.quit.keymask"),
        			   ActionConst.CMD_QUIT,
        			   listener));
	}        			   
    
        return docMenu;
    }

   /** create edit menu items.

⌨️ 快捷键说明

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