📄 ganttactionlistener.java
字号:
/** * Copyright 2004 Carlos Silva A. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */package jgantt.view;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.Frame;import java.awt.Point;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.MalformedURLException;import java.net.URL;import java.text.ParseException;import java.util.Date;import javax.swing.ImageIcon;import javax.swing.JDialog;import javax.swing.JFileChooser;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.filechooser.FileFilter;import jgantt.JGanttMain;import jgantt.Messages;import jgantt.model.Constraint;import jgantt.model.GanttException;import jgantt.model.GraphColors;import jgantt.model.IOManager;import jgantt.model.Project;import jgantt.model.Task;import jgantt.view.adapters.ProjectViewModel;import jgantt.view.dialogs.AsignationEditor;import jgantt.view.dialogs.ConstraintEditor;import jgantt.view.dialogs.GraphColorsEditor;import jgantt.view.dialogs.InputDialog;import jgantt.view.dialogs.OptionsEditor;import jgantt.view.dialogs.ProjectEditor;import jgantt.view.dialogs.ResourcesEditor;import jgantt.view.dialogs.ResourcesTable;import jgantt.view.dialogs.TaskEditor;import org.xml.sax.SAXException;/** * GanttActionListener, procesa todas las acciones recibidas desde el menu * principal y los menues popup dentro de la aplicacion. Los valores son * constantes para la mayoria de las opciones * <p> * $Date: 2005/08/19 15:51:08 $ * </p> * * @version $Revision: 1.35 $ * @author Carlos Silva */public class GanttActionListener implements ActionListener { public static final String WND_TITLE = Messages .getString("MainFrame.title"); //$NON-NLS-1$ /** * usado para mantener la asociacion de carpetas */ JFileChooser chooser = new JFileChooser(); // COMANDOS estaticos, definidos en el menu // FILE public static final String CMD_NEW = "new"; public static final String CMD_OPEN = "open"; public static final String CMD_SAVE = "save"; public static final String CMD_SAVE_AS = "saveas"; public static final String CMD_EXIT = "exit"; // EDIT public static final String CMD_EDIT_UNDO = "undo"; public static final String CMD_EDIT_REDO = "redo"; public static final String CMD_EDIT_TASK = "task"; public static final String CMD_INSERT_TASK = "instask"; public static final String CMD_APPEND_TASK = "apptask"; public static final String CMD_DELETE_TASK = "deltask"; public static final String CMD_EDIT_ASIGNATIONS = "asignations"; public static final String CMD_EDIT_RESOURCES = "resources"; public static final String CMD_MERGE_PROJECT = "mergeprj"; // PROJECT public static final String CMD_PROJ_EDIT = "settings"; public static final String CMD_SNAPSHOT = "takesnap"; public static final String CMD_REMSNAPSHOT = "removesnap"; // TOOLS public static final String CMD_EXPORT_IMG = "export_img"; public static final String CMD_RESOURCES_TABLE = "export_res"; // OPTIONS public static final String CMD_VIEW_OPTIONS = "viewop"; public static final String CMD_GRAPH_COLORS = "graphop"; public static final String CMD_USER_GRAPHCOLORS = "loadcolors"; public static final String CMD_DEFINE_GRAPHCOLORS = "defcolors"; // HELP public static final String CMD_HELP_KBD = "keybd"; public static final String CMD_HELP_HINTS = "hints"; public static final String CMD_HELP_FEEDBACK = "feedback"; public static final String CMD_HELP_ABOUT = "about"; // OTHER COMMANDS public static final String CMD_TASK_GRAPHICS = "graphop"; public static final String CMD_EDIT_CONSTRAINT = "constraint"; public static final String CMD_DELETE_CONSTRAINT = "delconst"; private Frame mainWindow; private GanttDisplay ganttDisplay; private ProjectViewModel pvModel; /** * Constructor * * @param pvm * ViewModel */ public GanttActionListener(ProjectViewModel pvm) { this.mainWindow = null; this.ganttDisplay = null; this.pvModel = pvm; } /** * Asigna la ventana y el display principal asociado a este objeto. * * @param window * @param display */ public void setup(Frame window, GanttDisplay display) { mainWindow = window; ganttDisplay = display; updWindowTitle(); } /** * Funcion despachadora */ public void actionPerformed(ActionEvent e) { try { String s = e.getActionCommand(); // System.out.println("ACTION " + s); if (s.equals(CMD_EXIT)) { cmdExit(); } else if (s.equals(CMD_EDIT_UNDO)) { cmdUndo(); } else if (s.equals(CMD_EDIT_REDO)) { cmdRedo(); } else if (s.equals(CMD_EDIT_TASK)) { cmdEditTask(); } else if (s.equals(CMD_INSERT_TASK)) { pvModel.insertTask(); } else if (s.equals(CMD_APPEND_TASK)) { pvModel.appendTask(); } else if (s.equals(CMD_DELETE_TASK)) { pvModel.deleteCurrentTask(); } else if (s.equals(CMD_EDIT_ASIGNATIONS)) { cmdEditAsignations(); } else if (s.equals(CMD_EDIT_CONSTRAINT)) { cmdEditConstraint(); } else if (s.equals(CMD_DELETE_CONSTRAINT)) { cmdDeleteConstraint(); } else if (s.equals(CMD_PROJ_EDIT)) { cmdEditProject(); } else if (s.equals(CMD_EDIT_RESOURCES)) { cmdEditResources(); } else if (s.equals(CMD_MERGE_PROJECT)) { cmdMergeProject(); } else if (s.equals(CMD_SNAPSHOT)) { cmdSnapShot(); } else if (s.equals(CMD_REMSNAPSHOT)) { cmdSnapShotRemove(); } else if (s.equals(CMD_VIEW_OPTIONS)) { cmdViewOptions(); } else if (s.equals(CMD_GRAPH_COLORS)) { cmdGraphColors(); } else if (s.equals(CMD_RESOURCES_TABLE)) { cmdResourcesTable(); } else if (s.equals(CMD_EXPORT_IMG)) { cmdExportImage(); } else if (s.equals(CMD_USER_GRAPHCOLORS)) { cmdLoadUserColors(); } else if (s.equals(CMD_DEFINE_GRAPHCOLORS)) { cmdDefineUserColors(); } else if (s.equals(CMD_NEW)) { cmdNew(); } else if (s.equals(CMD_SAVE)) { cmdSave(); } else if (s.equals(CMD_SAVE_AS)) { cmdSaveAs(); } else if (s.equals(CMD_OPEN)) { cmdOpen(); } else if (s.equals(CMD_HELP_KBD)) { cmdHelpKeyboard(); } else if (s.equals(CMD_HELP_FEEDBACK)) { cmdHelpFeedback(); } else if (s.equals(CMD_HELP_HINTS)) { cmdHelpHints(); } else if (s.equals(CMD_HELP_ABOUT)) { cmdHelpAbout(); } else // SOPORTE A COMANDOS ORIGINALMENTE PROVENIENTES DE GANTTDISPLAY if ("movedn".equals(s)) { pvModel.goDownTask(); } else if ("moveup".equals(s)) { pvModel.goUpTask(); } else if ("indentr".equals(s)) { pvModel.asChildTask(); } else if ("indentl".equals(s)) { pvModel.deChildTask(); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); System.err.println(Messages .getString("MainFrame.error.actionException")); //$NON-NLS-1$ ex.printStackTrace(System.err); } } static public void cmdHelpAbout() { new HelpWindow(Messages.getString("MainFrame.help.about.file")) .setVisible(true); } static public void cmdHelpHints() { HelpWindow w = new HelpWindow(Messages .getString("MainFrame.help.hints.file")); w.setSize(380, 210); w.setTitle("Tips"); w.setVisible(true); } static public void cmdHelpFeedback() throws MalformedURLException { new HelpWindow(new URL(Messages .getString("MainFrame.help.feedback.url"))).setVisible(true); } static public void cmdHelpKeyboard() { new HelpWindow(Messages.getString("MainFrame.help.keyb.file")) .setVisible(true); } /** * Cerrar el sistema. ejecuta System.exit(0). */ public void cmdExit() { if (mainWindow != null) { mainWindow.dispose(); System.exit(0); } } /** * Levanta el editor de tareas que apunta a la tarea actual */ public void cmdEditTask() { JDialog jf = new JDialog(mainWindow, Messages .getString("MainFrame.TaskEditorFrame.title")); //$NON-NLS-1$ ProjectViewModel pvm = (ProjectViewModel) ganttDisplay .getProjectViewModel(); jf.getContentPane().add(new TaskEditor(jf, pvm)); jf.pack(); Point p = mainWindow.getLocation(); jf.setLocation(p.x + 100, p.y + 100); jf.setVisible(true); } /** * Edita el constraint actual. El constraint actual se obtiene pidiendo a * GanttDisplay que retorne el objeto seleccionado actualmente. TODO: Mover * la informacion del objeto seleccionado hacia ViewModel. */ public void cmdEditConstraint() { JDialog jf = new JDialog(mainWindow, Messages .getString("ConstraintEditorFrame.title")); jf.setModal(true); ProjectViewModel pvm = (ProjectViewModel) ganttDisplay .getProjectViewModel(); Constraint c = (Constraint) ganttDisplay.getSelectedObject(); jf.getContentPane().add(new ConstraintEditor(c)); jf.pack(); Point p = mainWindow.getLocation(); jf.setLocation(p.x + 100, p.y + 100); jf.setVisible(true); } /** * Borra un constraint */ public void cmdDeleteConstraint() { Constraint c = (Constraint) ganttDisplay.getSelectedObject(); c.remove(); } /** * Edita los recursos existentes. */ public void cmdEditResources() { JDialog jf = new JDialog(mainWindow, Messages .getString("ResourcesEditor.title")); //$NON-NLS-1$ ProjectViewModel pvm = (ProjectViewModel) ganttDisplay .getProjectViewModel(); jf.getContentPane().add(new ResourcesEditor(jf, pvm)); jf.pack(); jf.setSize(new Dimension(300, 200)); Point p = mainWindow.getLocation(); jf.setLocation(p.x + 100, p.y + 100); jf.setVisible(true); } /** * Edita las asignaciones de recursos a la tarea actual */ public void cmdEditAsignations() { ProjectViewModel pvm = (ProjectViewModel) ganttDisplay .getProjectViewModel(); Task task = (Task) pvm.getCurrentTask();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -