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

📄 graphicprimitivecontainer.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
字号:
/* * Created on 17.06.2004 * */package net.sourceforge.ganttproject.chart;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.WeakHashMap;/** * @author bard */public class GraphicPrimitiveContainer {    private ArrayList myRectangles = new ArrayList();    private ArrayList myLines = new ArrayList();    private ArrayList myTexts = new ArrayList();    private Map myModelObject2primitive = new WeakHashMap();    private List myLayers = new ArrayList();    private int myDeltaX;    private int myDeltaY;    static class GraphicPrimitive {        private Color myBackgroundColor;        private Color myForegroundColor;        private String myStyleName;        private Object myModelObject;                public void setStyle(String styleName) {            myStyleName = styleName;        }        public String getStyle() {            return myStyleName;        }        public Color getBackgroundColor() {            return myBackgroundColor;        }        public void setBackgroundColor(Color myBackgroundColor) {            this.myBackgroundColor = myBackgroundColor;        }        public Color getForegroundColor() {            return myForegroundColor;        }        public void setForegroundColor(Color myForegroundColor) {            this.myForegroundColor = myForegroundColor;        }        /**         * @return         */        public Object getModelObject() {            return myModelObject;        }        /**         * @param modelObject         */        void setModelObject(Object modelObject) {            myModelObject = modelObject;        }    }    public static class Rectangle extends GraphicPrimitive {        final int myLeftX;        final int myTopY;        final int myWidth;        final int myHeight;        private Rectangle(int leftx, int topy, int width, int height) {            myLeftX = leftx;            myTopY = topy;            myWidth = width;            myHeight = height;        }        public int getRightX() {            return myLeftX + myWidth;        }        public int getBottomY() {            return myTopY + myHeight;        }        public String toString() {            return "leftx=" + myLeftX + " topy=" + myTopY + " width=" + myWidth                    + " height=" + myHeight;        }        public int getMiddleY() {            return myTopY + myHeight / 2;        }        public int getMiddleX() {            return myLeftX + myWidth / 2;        }    }    public static class Line extends GraphicPrimitive {        private final int myStartX;        private final int myStartY;        private final int myFinishX;        private final int myFinishY;        private Line(int startx, int starty, int finishx, int finishy) {            myStartX = startx;            myStartY = starty;            myFinishX = finishx;            myFinishY = finishy;        }    }    public static class Text extends GraphicPrimitive {        private final int myLeftX;        private final int myBottomY;        private final String myText;        private Font myFont;        private int myMaxLength;        private HAlignment myHAlignment = HAlignment.LEFT;        private VAlignment myVAlignment = VAlignment.BOTTOM;        Text(int leftX, int bottomY, String text) {            myLeftX = leftX;            myBottomY = bottomY;            myText = text;            myMaxLength = -1;        }        public void setFont(Font font) {            myFont = font;        }        public void setMaxLength(int maxLength) {            myMaxLength = maxLength;        }        public int getMaxLength() {            return myMaxLength;        }        public Font getFont() {            return myFont;        }        public String getText() {            return myText;        }        public int getLeftX() {            return myLeftX;        }        public int getBottomY() {            return myBottomY;        }                public void setAlignment(HAlignment halignment, VAlignment valignment) {            myHAlignment = halignment;            myVAlignment = valignment;        }                public HAlignment getHAlignment() {            return myHAlignment;        }                public VAlignment getVAlignment() {            return myVAlignment;        }    }    static final class HAlignment {        public static final HAlignment CENTER = new HAlignment();        public static final HAlignment LEFT = new HAlignment();        public static final HAlignment RIGHT = new HAlignment();    }        static final class VAlignment {        public static final VAlignment CENTER = new VAlignment();        public static final VAlignment TOP = new VAlignment();        public static final VAlignment BOTTOM = new VAlignment();            }    public GraphicPrimitiveContainer() {        this(0,0);    }    public GraphicPrimitiveContainer(int deltax, int deltay) {        myDeltaX = deltax;        myDeltaY = deltay;        myLayers.add(this);    }    public Rectangle createRectangle(int leftx, int topy, int width, int height) {        if (width < 0) {            width = -width;            leftx = leftx - width;        }        Rectangle result = new Rectangle(leftx+myDeltaX, topy+myDeltaY, width, height);        myRectangles.add(result);        return result;    }    public Line createLine(int startx, int starty, int finishx, int finishy) {        Line result = new Line(startx+myDeltaX, starty+myDeltaY, finishx+myDeltaX, finishy+myDeltaY);        myLines.add(result);        return result;    }    public Text createText(int leftx, int bottomy, String text) {        Text result = new Text(leftx+myDeltaX, bottomy+myDeltaY, text);        myTexts.add(result);        return result;    }    void paint(Painter painter, Graphics g) {        for (int i = 0; i < myRectangles.size(); i++) {            Rectangle next = (Rectangle) myRectangles.get(i);            painter.paint(next);        }        for (int i = 0; i < myLines.size(); i++) {            Line next = (Line) myLines.get(i);            Color foreColor = next.getForegroundColor();            if (foreColor == null) {                foreColor = Color.BLACK;            }            g.setColor(foreColor);            g.drawLine(next.myStartX, next.myStartY, next.myFinishX,                    next.myFinishY);        }        for (int i = 0; i < myTexts.size(); i++) {            Text next = (Text) myTexts.get(i);            painter.paint(next);        }    }    public void clear() {        myRectangles.clear();        myLines.clear();        myTexts.clear();        myModelObject2primitive.clear();    }    void bind(GraphicPrimitive primitive, Object modelObject) {        myModelObject2primitive.put(modelObject, primitive);        primitive.setModelObject(modelObject);    }    GraphicPrimitive getPrimitive(Object modelObject) {        return (GraphicPrimitive) myModelObject2primitive.get(modelObject);    }    public GraphicPrimitive getPrimitive(int x, int y) {        // System.err.println("looking for primitive under point x="+x+" y="+y);        return getPrimitive(x, 0, y, 0);//        for (int i = 0; i < myRectangles.size(); i++) {//            Rectangle next = (Rectangle) myRectangles.get(i);//            // System.err.println(" next rectangle="+next);//            if (next.myLeftX <= x && next.myLeftX + next.myWidth >= x//                    && next.myTopY <= y && next.myTopY + next.myHeight >= y) {//                return next;//            }//        }//        return null;    }        public GraphicPrimitive getPrimitive(int x, int xThreshold, int y, int yThreshold) {        for (int i = 0; i < myRectangles.size(); i++) {            Rectangle next = (Rectangle) myRectangles.get(i);            // System.err.println(" next rectangle="+next);            if (next.myLeftX <= x+xThreshold && next.myLeftX + next.myWidth >= x-xThreshold                    && next.myTopY <= y+yThreshold && next.myTopY + next.myHeight >= y-yThreshold) {                return next;            }        }        return null;            }    public GraphicPrimitiveContainer getLayer(int layer) {        if (layer < 0 || layer >= myLayers.size()) {            return this;        }        return (GraphicPrimitiveContainer) myLayers.get(layer);    }    public GraphicPrimitiveContainer newLayer() {        GraphicPrimitiveContainer result = new GraphicPrimitiveContainer();        myLayers.add(result);        return result;    }}

⌨️ 快捷键说明

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