org.jhotdraw.samples.draw.DrawApplicationModel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jhotdraw Show documentation
Show all versions of jhotdraw Show documentation
JHotDraw 7 with openTCS-specific modifications
The newest version!
/*
* @(#)DrawApplicationModel.java
*
* Copyright (c) 1996-2010 by the original authors of JHotDraw and all its
* contributors. All rights reserved.
*
* You may not use, copy or modify this file, except in compliance with the
* license agreement you entered into with the copyright holders. For details
* see accompanying license terms.
*/
package org.jhotdraw.samples.draw;
import edu.umd.cs.findbugs.annotations.Nullable;
import org.jhotdraw.draw.tool.CreationTool;
import org.jhotdraw.draw.tool.BezierTool;
import org.jhotdraw.draw.tool.TextCreationTool;
import org.jhotdraw.draw.tool.TextAreaCreationTool;
import org.jhotdraw.draw.tool.ImageTool;
import org.jhotdraw.draw.liner.ElbowLiner;
import org.jhotdraw.draw.liner.CurvedLiner;
import org.jhotdraw.draw.tool.ConnectionTool;
import org.jhotdraw.draw.decoration.ArrowTip;
import org.jhotdraw.gui.URIChooser;
import org.jhotdraw.util.*;
import java.util.*;
import javax.swing.*;
import org.jhotdraw.app.*;
import org.jhotdraw.draw.*;
import org.jhotdraw.draw.action.*;
import org.jhotdraw.gui.JFileURIChooser;
import org.jhotdraw.gui.filechooser.ExtensionFileFilter;
import static org.jhotdraw.draw.AttributeKeys.*;
/**
* DrawApplicationModel.
*
*
*
* @author Werner Randelshofer.
* @version $Id: DrawApplicationModel.java 717 2010-11-21 12:30:57Z rawcoder $
*/
public class DrawApplicationModel extends DefaultApplicationModel {
/**
* This editor is shared by all views.
*/
private DefaultDrawingEditor sharedEditor;
/** Creates a new instance. */
public DrawApplicationModel() {
}
public DefaultDrawingEditor getSharedEditor() {
if (sharedEditor == null) {
sharedEditor = new DefaultDrawingEditor();
}
return sharedEditor;
}
@Override
public void initView(Application a,View p) {
if (a.isSharingToolsAmongViews()) {
((DrawView) p).setEditor(getSharedEditor());
}
}
/**
* Creates toolbars for the application.
* This class always returns an empty list. Subclasses may return other
* values.
*/
@Override
public List createToolBars(Application a, @Nullable View pr) {
ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.draw.Labels");
DrawView p = (DrawView) pr;
DrawingEditor editor;
if (p == null) {
editor = getSharedEditor();
} else {
editor = p.getEditor();
}
LinkedList list = new LinkedList();
JToolBar tb;
tb = new JToolBar();
addCreationButtonsTo(tb, editor);
tb.setName(labels.getString("window.drawToolBar.title"));
list.add(tb);
tb = new JToolBar();
ButtonFactory.addAttributesButtonsTo(tb, editor);
tb.setName(labels.getString("window.attributesToolBar.title"));
list.add(tb);
tb = new JToolBar();
ButtonFactory.addAlignmentButtonsTo(tb, editor);
tb.setName(labels.getString("window.alignmentToolBar.title"));
list.add(tb);
return list;
}
private void addCreationButtonsTo(JToolBar tb, DrawingEditor editor) {
addDefaultCreationButtonsTo(tb, editor,
ButtonFactory.createDrawingActions(editor),
ButtonFactory.createSelectionActions(editor));
}
public void addDefaultCreationButtonsTo(JToolBar tb, final DrawingEditor editor,
Collection drawingActions, Collection selectionActions) {
ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.draw.Labels");
ButtonFactory.addSelectionToolTo(tb, editor, drawingActions, selectionActions);
tb.addSeparator();
AbstractAttributedFigure af;
CreationTool ct;
ConnectionTool cnt;
ConnectionFigure lc;
ButtonFactory.addToolTo(tb, editor, new CreationTool(new RectangleFigure()), "edit.createRectangle", labels);
ButtonFactory.addToolTo(tb, editor, new CreationTool(new RoundRectangleFigure()), "edit.createRoundRectangle", labels);
ButtonFactory.addToolTo(tb, editor, new CreationTool(new EllipseFigure()), "edit.createEllipse", labels);
ButtonFactory.addToolTo(tb, editor, new CreationTool(new DiamondFigure()), "edit.createDiamond", labels);
ButtonFactory.addToolTo(tb, editor, new CreationTool(new TriangleFigure()), "edit.createTriangle", labels);
ButtonFactory.addToolTo(tb, editor, new CreationTool(new LineFigure()), "edit.createLine", labels);
ButtonFactory.addToolTo(tb, editor, ct = new CreationTool(new LineFigure()), "edit.createArrow", labels);
af = (AbstractAttributedFigure) ct.getPrototype();
af.set(END_DECORATION, new ArrowTip(0.35, 12, 11.3));
ButtonFactory.addToolTo(tb, editor, new ConnectionTool(new LineConnectionFigure()), "edit.createLineConnection", labels);
ButtonFactory.addToolTo(tb, editor, cnt = new ConnectionTool(new LineConnectionFigure()), "edit.createElbowConnection", labels);
lc = cnt.getPrototype();
lc.setLiner(new ElbowLiner());
ButtonFactory.addToolTo(tb, editor, cnt = new ConnectionTool(new LineConnectionFigure()), "edit.createCurvedConnection", labels);
lc = cnt.getPrototype();
lc.setLiner(new CurvedLiner());
ButtonFactory.addToolTo(tb, editor, new BezierTool(new BezierFigure()), "edit.createScribble", labels);
ButtonFactory.addToolTo(tb, editor, new BezierTool(new BezierFigure(true)), "edit.createPolygon", labels);
ButtonFactory.addToolTo(tb, editor, new TextCreationTool(new TextFigure()), "edit.createText", labels);
ButtonFactory.addToolTo(tb, editor, new TextAreaCreationTool(new TextAreaFigure()), "edit.createTextArea", labels);
ButtonFactory.addToolTo(tb, editor, new ImageTool(new ImageFigure()), "edit.createImage", labels);
}
@Override
public URIChooser createOpenChooser(Application a, @Nullable View v) {
JFileURIChooser c = new JFileURIChooser();
c.addChoosableFileFilter(new ExtensionFileFilter("Drawing .xml","xml"));
return c;
}
@Override
public URIChooser createSaveChooser(Application a, @Nullable View v) {
JFileURIChooser c = new JFileURIChooser();
c.addChoosableFileFilter(new ExtensionFileFilter("Drawing .xml","xml"));
return c;
}
}