/*
* @(#)PertPanel.java
*
* Copyright (c) 1996-2010 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
package org.jhotdraw.samples.pert;
import org.jhotdraw.undo.UndoRedoManager;
import org.jhotdraw.app.action.edit.PasteAction;
import org.jhotdraw.app.action.edit.CutAction;
import org.jhotdraw.app.action.edit.DuplicateAction;
import org.jhotdraw.app.action.edit.CopyAction;
import org.jhotdraw.app.action.edit.SelectAllAction;
import org.jhotdraw.draw.tool.CreationTool;
import org.jhotdraw.draw.tool.TextAreaCreationTool;
import org.jhotdraw.draw.tool.ConnectionTool;
import org.jhotdraw.gui.JPopupButton;
import org.jhotdraw.util.*;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import org.jhotdraw.draw.*;
import org.jhotdraw.draw.action.*;
import org.jhotdraw.samples.pert.figures.DependencyFigure;
import org.jhotdraw.samples.pert.figures.TaskFigure;
/**
* PertPanel.
*
* @author Werner Randelshofer
* @version $Id$
*/
public class PertPanel extends JPanel {
private static final long serialVersionUID = 1L;
private UndoRedoManager undoManager;
private Drawing drawing;
private DrawingEditor editor;
/** Creates new instance. */
public PertPanel() {
ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.draw.Labels");
initComponents();
undoManager = new UndoRedoManager();
editor = new DefaultDrawingEditor();
editor.add(view);
addCreationButtonsTo(creationToolbar, editor);
ButtonFactory.addAttributesButtonsTo(attributesToolbar, editor);
JPopupButton pb = new JPopupButton();
pb.setItemFont(UIManager.getFont("MenuItem.font"));
labels.configureToolBarButton(pb, "actions");
pb.add(new DuplicateAction());
pb.addSeparator();
pb.add(new GroupAction(editor));
pb.add(new UngroupAction(editor));
pb.addSeparator();
pb.add(new BringToFrontAction(editor));
pb.add(new SendToBackAction(editor));
pb.addSeparator();
pb.add(new CutAction());
pb.add(new CopyAction());
pb.add(new PasteAction());
pb.add(new SelectAllAction());
pb.add(new SelectSameAction(editor));
pb.addSeparator();
pb.add(undoManager.getUndoAction());
pb.add(undoManager.getRedoAction());
// FIXME - We need a toggle grid action
// pb.addSeparator();
// pb.add(new ToggleGridAction(editor));
JMenu m = new JMenu(labels.getString("view.zoomFactor.text"));
JRadioButtonMenuItem rbmi;
ButtonGroup group = new ButtonGroup();
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 0.1, null)));
group.add(rbmi);
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 0.25, null)));
group.add(rbmi);
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 0.5, null)));
group.add(rbmi);
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 0.75, null)));
group.add(rbmi);
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 1.0, null)));
rbmi.setSelected(true);
group.add(rbmi);
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 1.25, null)));
group.add(rbmi);
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 1.5, null)));
group.add(rbmi);
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 2, null)));
group.add(rbmi);
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 3, null)));
group.add(rbmi);
m.add(rbmi = new JRadioButtonMenuItem(new ZoomAction(editor, 4, null)));
group.add(rbmi);
pb.add(m);
pb.setFocusable(false);
creationToolbar.addSeparator();
creationToolbar.add(pb);
DefaultDrawing drawing = new DefaultDrawing();
view.setDrawing(drawing);
drawing.addUndoableEditListener(undoManager);
}
public void setDrawing(Drawing d) {
undoManager.discardAllEdits();
view.getDrawing().removeUndoableEditListener(undoManager);
view.setDrawing(d);
d.addUndoableEditListener(undoManager);
}
public Drawing getDrawing() {
return view.getDrawing();
}
public DrawingView getView() {
return view;
}
public DrawingEditor getEditor() {
return editor;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
toolButtonGroup = new javax.swing.ButtonGroup();
scrollPane = new javax.swing.JScrollPane();
view = new org.jhotdraw.draw.DefaultDrawingView();
jPanel1 = new javax.swing.JPanel();
creationToolbar = new javax.swing.JToolBar();
attributesToolbar = new javax.swing.JToolBar();
setLayout(new java.awt.BorderLayout());
scrollPane.setViewportView(view);
add(scrollPane, java.awt.BorderLayout.CENTER);
jPanel1.setLayout(new java.awt.GridBagLayout());
creationToolbar.setFloatable(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel1.add(creationToolbar, gridBagConstraints);
attributesToolbar.setFloatable(false);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel1.add(attributesToolbar, gridBagConstraints);
add(jPanel1, java.awt.BorderLayout.SOUTH);
}// </editor-fold>//GEN-END:initComponents
private void addCreationButtonsTo(JToolBar tb, final DrawingEditor editor) {
// AttributeKeys for the entitie sets
HashMap<AttributeKey<?>,Object> attributes;
ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.samples.pert.Labels");
ResourceBundleUtil drawLabels = ResourceBundleUtil.getBundle("org.jhotdraw.draw.Labels");
ButtonFactory.addSelectionToolTo(tb, editor);
tb.addSeparator();
attributes = new HashMap<AttributeKey<?>,Object>();
attributes.put(AttributeKeys.FILL_COLOR, Color.white);
attributes.put(AttributeKeys.STROKE_COLOR, Color.black);
attributes.put(AttributeKeys.TEXT_COLOR, Color.black);
ButtonFactory.addToolTo(tb, editor, new CreationTool(new TaskFigure(), attributes), "edit.createTask", labels);
attributes = new HashMap<AttributeKey<?>,Object>();
attributes.put(AttributeKeys.STROKE_COLOR, new Color(0x000099));
ButtonFactory.addToolTo(tb, editor, new ConnectionTool(new DependencyFigure(), attributes), "edit.createDependency", labels);
tb.addSeparator();
ButtonFactory.addToolTo(tb, editor, new TextAreaCreationTool(new TextAreaFigure()), "edit.createTextArea", drawLabels);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JToolBar attributesToolbar;
private javax.swing.JToolBar creationToolbar;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane scrollPane;
private javax.swing.ButtonGroup toolButtonGroup;
private org.jhotdraw.draw.DefaultDrawingView view;
// End of variables declaration//GEN-END:variables
}