GED: Arc Properties 23/12723/2
Marcos CARDINOT [Fri, 27 Sep 2013 22:02:25 +0000 (23:02 +0100)]
Change-Id: Ib4355a6517a270fa686f97fe0c5af6c66629349a

scilab/modules/gui/src/java/org/scilab/modules/gui/ged/MessagesGED.java
scilab/modules/gui/src/java/org/scilab/modules/gui/ged/SwapObject.java
scilab/modules/gui/src/java/org/scilab/modules/gui/ged/actions/ShowHide.java
scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/Arc.java [new file with mode: 0644]
scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/BaseProperties.java [new file with mode: 0644]
scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/DataProperties.java [new file with mode: 0644]
scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/Style.java [new file with mode: 0644]
scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/properties/Arc.java [new file with mode: 0644]

index 031db82..83845ec 100644 (file)
@@ -44,6 +44,7 @@ public class MessagesGED {
     public static final String matplot = Messages.gettext("Matplot");
 
     //Base Properties - Labels
+    public static final String arc_drawing_method = Messages.gettext("Arc Drawing Method");
     public static final String auto_rotation = Messages.gettext("Auto Rotation");
     public static final String auto_position = Messages.gettext("Auto Position");
     public static final String auto_ticks = Messages.gettext("Auto Ticks");
@@ -168,6 +169,8 @@ public class MessagesGED {
     public static final String z_label = Messages.gettext("Z Label");
     public static final String scaled = Messages.gettext("Scaled");
     public static final String title = Messages.gettext("Title");
+    public static final String start_angle = Messages.gettext("Start Angle");
+    public static final String end_angle = Messages.gettext("End Angle");
 
     //Data - Tooltip
     public static final String figure_id_tooltip = Messages.gettext("Number of current figure.");
index f6991bc..0960187 100644 (file)
@@ -13,6 +13,7 @@ package org.scilab.modules.gui.ged;
 
 import org.scilab.modules.graphic_objects.graphicController.GraphicController;
 import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.gui.ged.graphic_objects.arc.Arc;
 import org.scilab.modules.gui.ged.graphic_objects.axes.Axes;
 import org.scilab.modules.gui.ged.graphic_objects.champ.Champ;
 import org.scilab.modules.gui.ged.graphic_objects.datatip.Datatip;
@@ -71,6 +72,8 @@ public class SwapObject {
                 SwingInspector.setPanel(label, MessagesGED.label);
                 break;
             case GraphicObjectProperties.__GO_ARC__:
+                Arc arc = new Arc(objectID);
+                SwingInspector.setPanel(arc, MessagesGED.arc);
                 break;
             case GraphicObjectProperties.__GO_CHAMP__:
                 Champ champ = new Champ(objectID);
index d2a88e3..52f5702 100644 (file)
@@ -123,13 +123,9 @@ public class ShowHide extends CommonCallBack {
 
     public static void arc(boolean hide) {
         try {
-            org.scilab.modules.gui.ged.graphic_objects.axes.BaseProperties.getInstance().setVisibility(!hide);
-            org.scilab.modules.gui.ged.graphic_objects.axes.Box.getInstance().setVisibility(!hide);
-            org.scilab.modules.gui.ged.graphic_objects.axes.Camera.getInstance().setVisibility(!hide);
-            org.scilab.modules.gui.ged.graphic_objects.axes.Tick.getInstance().setVisibility(!hide);
-            org.scilab.modules.gui.ged.graphic_objects.axes.Label.getInstance().setVisibility(!hide);
-            org.scilab.modules.gui.ged.graphic_objects.axes.Position.getInstance().setVisibility(!hide);
-            org.scilab.modules.gui.ged.graphic_objects.axes.Style.getInstance().setVisibility(!hide);
+            org.scilab.modules.gui.ged.graphic_objects.arc.BaseProperties.getInstance().setVisibility(!hide);
+            org.scilab.modules.gui.ged.graphic_objects.arc.DataProperties.getInstance().setVisibility(!hide);
+            org.scilab.modules.gui.ged.graphic_objects.arc.Style.getInstance().setVisibility(!hide);
         } catch (NullPointerException e1) {
         } catch (NoSuchMethodError e2) { }
     }
@@ -269,6 +265,14 @@ public class ShowHide extends CommonCallBack {
                     setStatus(false);
                 else if (!A && !B && !C && !D && !E && !F && !G)
                     setStatus(true);
+            } else if("arc".equals(type)) {
+                boolean A = org.scilab.modules.gui.ged.graphic_objects.arc.BaseProperties.getInstance().getStatus();
+                boolean B = org.scilab.modules.gui.ged.graphic_objects.arc.DataProperties.getInstance().getStatus();
+                boolean C = org.scilab.modules.gui.ged.graphic_objects.arc.Style.getInstance().getStatus();
+                if (A && B && C)
+                    setStatus(false);
+                else if (!A && !B && !C)
+                    setStatus(true);
             } else if("champ".equals(type)) {
                 boolean A = org.scilab.modules.gui.ged.graphic_objects.champ.DataProperties.getInstance().getStatus();
                 boolean B = org.scilab.modules.gui.ged.graphic_objects.champ.Style.getInstance().getStatus();
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/Arc.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/Arc.java
new file mode 100644 (file)
index 0000000..594177c
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Marcos Cardinot
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+package org.scilab.modules.gui.ged.graphic_objects.arc;
+
+import org.scilab.modules.gui.ged.graphic_objects.SimpleObject;
+
+/**
+* Properties of the legend.
+* @author Marcos CARDINOT <mcardinot@gmail.com>
+*/
+public class Arc extends SimpleObject {
+    private BaseProperties base;
+    private DataProperties data;
+    private Style style;
+
+    /**
+    * Initializes all sections (JPanel's) and Add in Main JPanel of Object.
+    * @param objectID Enters the identification of object.
+    */
+    public Arc(String objectID) {
+        super(objectID);
+        base = new BaseProperties(objectID);
+        data = new DataProperties(objectID);
+        style = new Style(objectID);
+        addSectionPanel(this, base, getPosition(base.getName()));
+        addSectionPanel(this, data, getPosition(data.getName()));
+        addSectionPanel(this, style, getPosition(style.getName()));
+        this.fillerV(getSectionsName());
+    }
+
+    /**
+    * Get the name of all sections.
+    * @return sections name
+    */
+    @Override
+    public final String[] getSectionsName() {
+        return new String[] {
+                    base.getName(),
+                    data.getName(),
+                    style.getName()};
+    }
+}
\ No newline at end of file
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/BaseProperties.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/BaseProperties.java
new file mode 100644 (file)
index 0000000..563e1cb
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Marcos CARDINOT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+package org.scilab.modules.gui.ged.graphic_objects.arc;
+
+import javax.swing.JPanel;
+import org.scilab.modules.gui.ged.MessagesGED;
+import org.scilab.modules.gui.ged.graphic_objects.SimpleSection;
+import org.scilab.modules.gui.ged.graphic_objects.properties.Arc;
+import org.scilab.modules.gui.ged.graphic_objects.properties.ClippableContouredObject;
+import org.scilab.modules.gui.ged.graphic_objects.properties.GraphicObject;
+
+/**
+* Construction and startup of all components of the section: Base Properties.
+* @author Marcos CARDINOT <mcardinot@gmail.com>
+*/
+public class BaseProperties extends SimpleSection {
+    private JPanel sectionPanel;
+    private static BaseProperties instance;
+    private Arc arc = new Arc();
+    private ClippableContouredObject clippableContouredObject = new ClippableContouredObject();
+    private GraphicObject graphicObject = new GraphicObject();
+
+    /**
+    * Initializes the properties and the icons of the buttons.
+    * @param objectID Enters the identification of object.
+    */
+    public BaseProperties(String objectID) {
+        super(MessagesGED.base_properties, "arc");
+        instance = this;
+        sectionPanel = getSectionPanel();
+        initComponents(objectID);
+    }
+
+    /**
+     * Get instance
+     * @return instance
+     */
+    public static BaseProperties getInstance() {
+        return instance;
+    }
+
+    /**
+    * Add all the properties in this section.
+    * @param objectID uid
+    */
+    @Override
+    public final void initComponents(String objectID) {
+        int row = 0;
+        final int leftmargin = 0; //to inner components
+        int column = 1; //first column
+
+        //Components of the property: Arc Drawing Method
+        arc.arcDrawingMethod(sectionPanel, row++, column, leftmargin, objectID);
+
+        //Components of the property: Clip State.
+        clippableContouredObject.clipState(sectionPanel, row++, column, leftmargin, objectID);
+
+        //Components of the property: Clip Box.
+        clippableContouredObject.clipBox(sectionPanel, row, column, leftmargin, objectID);
+        row+=2;
+
+        //Components of the property: Tag.
+        graphicObject.tag(sectionPanel, row++, column, leftmargin, objectID);
+
+        //Components of the property: User Data.
+        graphicObject.userData(sectionPanel, row++, column, leftmargin);
+
+        //Components of the property: Visible
+        graphicObject.visible(sectionPanel, row++, column, leftmargin, objectID);
+    }
+}
\ No newline at end of file
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/DataProperties.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/DataProperties.java
new file mode 100644 (file)
index 0000000..938303d
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Marcos CARDINOT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+package org.scilab.modules.gui.ged.graphic_objects.arc;
+
+import javax.swing.JPanel;
+import org.scilab.modules.gui.ged.MessagesGED;
+import org.scilab.modules.gui.ged.graphic_objects.SimpleSection;
+import org.scilab.modules.gui.ged.graphic_objects.properties.Arc;
+
+/**
+* Construction and startup of all components of the section: Data Properties.
+*
+* @author Marcos CARDINOT <mcardinot@gmail.com>
+*/
+public class DataProperties extends SimpleSection {
+    private JPanel sectionPanel;
+    private static DataProperties instance;
+    private Arc arc = new Arc();
+
+    /**
+    * Initializes the properties and the icons of the buttons.
+    * @param objectID Enters the identification of object.
+    */
+    public DataProperties(String objectID) {
+        super(MessagesGED.data_properties, "arc");
+        instance = this;
+        sectionPanel = getSectionPanel();
+        initComponents(objectID);
+    }
+
+    /**
+     * Get instance
+     * @return instance
+     */
+    public static DataProperties getInstance() {
+        return instance;
+    }
+
+    /**
+    * Add all the properties in this section.
+    * @param objectID uid
+    */
+    @Override
+    public final void initComponents(String objectID) {
+        int row = 0;
+        final int leftmargin = 0; //to inner components
+        int column = 1; //first column
+
+        //Components of the property: Data
+        //Upper Left Point
+        arc.upperLeftPoint(sectionPanel, row++, column, leftmargin, objectID);
+        row++;
+
+        //Width
+        arc.width(sectionPanel, row++, column, leftmargin, objectID);
+
+        //Height
+        arc.height(sectionPanel, row++, column, leftmargin, objectID);
+
+        //Start Angle
+        arc.startAngle(sectionPanel, row++, column, leftmargin, objectID);
+
+        //End Angle
+        arc.endAngle(sectionPanel, row++, column, leftmargin, objectID);
+    }
+}
\ No newline at end of file
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/Style.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/arc/Style.java
new file mode 100644 (file)
index 0000000..de38513
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Marcos CARDINOT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+package org.scilab.modules.gui.ged.graphic_objects.arc;
+
+import javax.swing.JPanel;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.gui.ged.MessagesGED;
+import org.scilab.modules.gui.ged.graphic_objects.SimpleSection;
+import org.scilab.modules.gui.ged.graphic_objects.properties.ContouredObject;
+
+/**
+* Construction and startup of all components of the section: Style/Appeareance.
+* @author Marcos CARDINOT <mcardinot@gmail.com>
+*/
+public class Style extends SimpleSection {
+    private JPanel sectionPanel;
+    private static Style instance;
+    private ContouredObject contouredObject = new ContouredObject();
+
+    /**
+    * Receives and passes the objectID to the parent class.
+    * @param objectID Enters the identification of object.
+    */
+    public Style(String objectID) {
+        super(MessagesGED.style_appearance, "arc");
+        instance = this;
+        sectionPanel = getSectionPanel();
+        initComponents(objectID);
+    }
+
+    /**
+     * Get instance
+     * @return instance
+     */
+    public static Style getInstance() {
+        return instance;
+    }
+
+    /**
+    * Initialize the Components.
+    */
+    @Override
+    public final void initComponents(String objectID) {
+        int row = 0;
+        final int leftmargin = 16; //to inner components
+        int column = 0; //first column
+
+        String parentFigure = (String) GraphicController.getController()
+                .getProperty(objectID, GraphicObjectProperties.__GO_PARENT_FIGURE__);
+
+        //Components of the property: Fill Mode
+        contouredObject.fillMode(sectionPanel, row++, column, leftmargin, objectID);
+
+        //Components of the property: Background Color
+        contouredObject.backgroundColor(sectionPanel, row++, column, leftmargin, objectID, parentFigure);
+
+        //Components of the property: Line Mode
+        contouredObject.lineMode(sectionPanel, row++, column, leftmargin, objectID);
+
+        //Components of the property: Foreground Color
+        contouredObject.lineColor(sectionPanel, row++, column, leftmargin,
+                                  objectID, parentFigure, "arc.Style", this);
+
+        //Components of the property: Line Style
+        contouredObject.lineStyle(sectionPanel, row++, column, leftmargin, objectID);
+
+        //Components of the property: Thickness
+        contouredObject.thickness(sectionPanel, row++, column, leftmargin, objectID);
+    }
+
+    /**
+    * Change the color of the object.
+    * @param scilabColor index of the color map.
+    * @param UID objectID.
+    */
+    public void setForegroundColor(int scilabColor, String UID) {
+        GraphicController.getController().setProperty(
+                UID, GraphicObjectProperties.__GO_LINE_COLOR__, scilabColor);
+    }
+}
\ No newline at end of file
diff --git a/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/properties/Arc.java b/scilab/modules/gui/src/java/org/scilab/modules/gui/ged/graphic_objects/properties/Arc.java
new file mode 100644 (file)
index 0000000..2873a23
--- /dev/null
@@ -0,0 +1,384 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Marcos CARDINOT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+package org.scilab.modules.gui.ged.graphic_objects.properties;
+
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.JToggleButton;
+
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.gui.ged.ColorMapHandler;
+import org.scilab.modules.gui.ged.ContentLayout;
+import org.scilab.modules.gui.ged.MessagesGED;
+
+/**
+* Camera properties:
+* ArcDrawingMethod
+*
+* @author Marcos CARDINOT <mcardinot@gmail.com>
+*/
+public class Arc extends ContentLayout {
+    private JTextField cULP;
+    private JTextField cULPx;
+    private JTextField cULPy;
+    private JTextField cULPz;
+
+    /**
+     * Components of the property: Arc Drawing Method
+     * @param panel
+     * @param ROW
+     * @param COLUMN
+     * @param LEFTMARGIN
+     * @param UID objectID
+     */
+    public void arcDrawingMethod(JPanel panel, int ROW, int COLUMN, int LEFTMARGIN, final String UID) {
+        JLabel lArcDrawingMethod = new JLabel();
+        final JComboBox cArcDrawingMethod = new JComboBox();
+        addLabelComboBox(panel, lArcDrawingMethod, MessagesGED.arc_drawing_method,
+                                cArcDrawingMethod, new String[] {MessagesGED.nurbs , MessagesGED.lines},
+                                LEFTMARGIN, COLUMN, ROW++);
+        cArcDrawingMethod.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent evt) {
+                GraphicController.getController().setProperty(
+                        UID, GraphicObjectProperties.__GO_ARC_DRAWING_METHOD__,
+                        cArcDrawingMethod.getSelectedIndex());
+            }
+        });
+        // Get the current status of the property: Arc Drawing Method
+        cArcDrawingMethod.setSelectedIndex((Integer) GraphicController.getController()
+                .getProperty(UID, GraphicObjectProperties.__GO_ARC_DRAWING_METHOD__));
+    }
+
+    /**
+     * Components of the property: Upper Left Point
+     * @param panel
+     * @param ROW
+     * @param COLUMN
+     * @param LEFTMARGIN
+     * @param UID 
+     */
+    public void upperLeftPoint(JPanel panel, int ROW, int COLUMN, int LEFTMARGIN, final String UID) {
+        int LEFTMARGINIP = 0; //left margin - inner panel
+        int COLUMNIP = 0; //left column - inner panel
+        final JPanel pULP = new JPanel();
+        final JToggleButton bULP = new JToggleButton();
+        JLabel lULP = new JLabel();
+        JLabel lULPx = new JLabel();
+        JLabel lULPy = new JLabel();
+        JLabel lULPz = new JLabel();
+        cULP = new JTextField();
+        cULPx = new JTextField();
+        cULPy = new JTextField();
+        cULPz = new JTextField();
+
+        addInnerPanel(panel, pULP, bULP, lULP, cULP, MessagesGED.upper_left_point, ROW);
+        bULP.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent evt) {
+                pULP.setVisible(!bULP.isSelected());
+            }
+        });
+        int rowULP = 0;
+        //ULP - X
+        addLabelTextField(pULP, lULPx, "X",
+                          cULPx, true, LEFTMARGINIP, COLUMNIP, rowULP++);
+        cULPx.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent evt) {
+                updateULP(UID);
+            }
+        });
+        cULPx.addFocusListener(new FocusAdapter() {
+            @Override
+            public void focusLost(FocusEvent evt) {
+                updateULP(UID);
+            }
+        });
+        //ULP - Y
+        addLabelTextField(pULP, lULPy, "Y",
+                          cULPy, true, LEFTMARGINIP, COLUMNIP, rowULP++);
+        cULPy.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent evt) {
+                updateULP(UID);
+            }
+        });
+        cULPy.addFocusListener(new FocusAdapter() {
+            @Override
+            public void focusLost(FocusEvent evt) {
+                updateULP(UID);
+            }
+        });
+        //ULP - Z
+        addLabelTextField(pULP, lULPz, "Z",
+                          cULPz, true, LEFTMARGINIP, COLUMNIP, rowULP++);
+        cULPz.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent evt) {
+                updateULP(UID);
+            }
+        });
+        cULPz.addFocusListener(new FocusAdapter() {
+            @Override
+            public void focusLost(FocusEvent evt) {
+                updateULP(UID);
+            }
+        });
+        getULP(UID);
+    }
+
+    /**
+    * Inserts the current situation of the upper left point.
+    */
+    private void titleULP() {
+        cULP.setText(" [" + cULPx.getText() + " , " + cULPy.getText()  + " , " + cULPz.getText() + "]");
+    }
+
+    /**
+    * Get status of the property: upper left point.
+    */
+    private void getULP(String UID) {
+        Double[] currentULP = (Double []) GraphicController.getController()
+                    .getProperty(UID, GraphicObjectProperties.__GO_UPPER_LEFT_POINT__);
+        cULPx.setText(currentULP[0].toString());
+        cULPy.setText(currentULP[1].toString());
+        cULPz.setText(currentULP[2].toString());
+        titleULP();
+    }
+
+    /**
+    * Updates the property: upper left point.
+    */
+    private void updateULP(String UID) {
+        try {
+            Double[] value = new Double[3];
+            value[0] = Double.parseDouble(cULPx.getText());
+            value[1] = Double.parseDouble(cULPy.getText());
+            value[2] = Double.parseDouble(cULPz.getText());
+            GraphicController.getController()
+                       .setProperty(UID, GraphicObjectProperties.__GO_UPPER_LEFT_POINT__, value);
+            titleULP();
+        } catch (NumberFormatException e) {
+            getULP(UID);
+        }
+    }
+
+    /**
+     * Components of the property: Width
+     * @param panel
+     * @param ROW
+     * @param COLUMN
+     * @param LEFTMARGIN
+     * @param UID objectID.
+     */
+    public void width(JPanel panel, int ROW, int COLUMN, int LEFTMARGIN, final String UID) {
+        JLabel lWidth = new JLabel();
+        final JTextField cWidth = new JTextField();
+
+        addLabelTextField(panel, lWidth, MessagesGED.width,
+                                 cWidth, true, LEFTMARGIN, COLUMN, ROW++);
+        cWidth.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent evt) {
+                setWidth(cWidth, UID);
+            }
+        });
+        cWidth.addFocusListener(new FocusAdapter() {
+            @Override
+            public void focusLost(FocusEvent evt) {
+                setWidth(cWidth, UID);
+            }
+        });
+        // Get the current status of the property: Width
+        cWidth.setText(Double.toString((Double) GraphicController.getController()
+                    .getProperty(UID, GraphicObjectProperties.__GO_WIDTH__)));
+
+    }
+
+    /**
+    * Set Width
+    * @param cWidth JTextField
+    * @param UID id
+    */
+    private void setWidth(JTextField cWidth, String UID) {
+        try {
+            GraphicController.getController().setProperty(
+                    UID,
+                    GraphicObjectProperties.__GO_WIDTH__,
+                    Double.parseDouble(cWidth.getText()));
+        } catch (NumberFormatException e) {
+            cWidth.setText(Double.toString((Double) GraphicController.getController()
+                    .getProperty(UID, GraphicObjectProperties.__GO_WIDTH__)));
+        }
+    }
+
+    /**
+     * Components of the property: Height
+     * @param panel
+     * @param ROW
+     * @param COLUMN
+     * @param LEFTMARGIN
+     * @param UID objectID.
+     */
+    public void height(JPanel panel, int ROW, int COLUMN, int LEFTMARGIN, final String UID) {
+        JLabel lHeight = new JLabel();
+        final JTextField cHeight = new JTextField();
+
+        addLabelTextField(panel, lHeight, MessagesGED.height,
+                                 cHeight, true, LEFTMARGIN, COLUMN, ROW++);
+        cHeight.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent evt) {
+                setHeight(cHeight, UID);
+            }
+        });
+        cHeight.addFocusListener(new FocusAdapter() {
+            @Override
+            public void focusLost(FocusEvent evt) {
+                setHeight(cHeight, UID);
+            }
+        });
+        // Get the current status of the property: Height
+        cHeight.setText(Double.toString((Double) GraphicController.getController()
+                    .getProperty(UID, GraphicObjectProperties.__GO_HEIGHT__)));
+
+    }
+
+    /**
+    * Set Width
+    * @param cHeight JTextField
+    * @param UID id
+    */
+    private void setHeight(JTextField cHeight, String UID) {
+        try {
+            GraphicController.getController().setProperty(
+                    UID,
+                    GraphicObjectProperties.__GO_HEIGHT__,
+                    Double.parseDouble(cHeight.getText()));
+        } catch (NumberFormatException e) {
+            cHeight.setText(Double.toString((Double) GraphicController.getController()
+                    .getProperty(UID, GraphicObjectProperties.__GO_HEIGHT__)));
+        }
+    }
+
+    /**
+     * Components of the property: Start Angle
+     * @param panel
+     * @param ROW
+     * @param COLUMN
+     * @param LEFTMARGIN
+     * @param UID objectID.
+     */
+    public void startAngle(JPanel panel, int ROW, int COLUMN, int LEFTMARGIN, final String UID) {
+        JLabel lStartAngle = new JLabel();
+        final JTextField cStartAngle = new JTextField();
+
+        addLabelTextField(panel, lStartAngle, MessagesGED.start_angle,
+                                 cStartAngle, true, LEFTMARGIN, COLUMN, ROW++);
+        cStartAngle.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent evt) {
+                setStartAngle(cStartAngle, UID);
+            }
+        });
+        cStartAngle.addFocusListener(new FocusAdapter() {
+            @Override
+            public void focusLost(FocusEvent evt) {
+                setStartAngle(cStartAngle, UID);
+            }
+        });
+        // Get the current status of the property: Start Angle
+        cStartAngle.setText(Double.toString((Double) GraphicController.getController()
+                    .getProperty(UID, GraphicObjectProperties.__GO_START_ANGLE__)));
+
+    }
+
+    /**
+    * Set Start Angle
+    * @param cStartAngle JTextField
+    * @param UID id
+    */
+    private void setStartAngle(JTextField cStartAngle, String UID) {
+        try {
+            GraphicController.getController().setProperty(
+                    UID,
+                    GraphicObjectProperties.__GO_START_ANGLE__,
+                    Double.parseDouble(cStartAngle.getText()));
+        } catch (NumberFormatException e) {
+            cStartAngle.setText(Double.toString((Double) GraphicController.getController()
+                    .getProperty(UID, GraphicObjectProperties.__GO_START_ANGLE__)));
+        }
+    }
+
+    /**
+     * Components of the property: End Angle
+     * @param panel
+     * @param ROW
+     * @param COLUMN
+     * @param LEFTMARGIN
+     * @param UID objectID.
+     */
+    public void endAngle(JPanel panel, int ROW, int COLUMN, int LEFTMARGIN, final String UID) {
+        JLabel lEndAngle = new JLabel();
+        final JTextField cEndAngle = new JTextField();
+
+        addLabelTextField(panel, lEndAngle, MessagesGED.end_angle,
+                                 cEndAngle, true, LEFTMARGIN, COLUMN, ROW++);
+        cEndAngle.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent evt) {
+                setEndAngle(cEndAngle, UID);
+            }
+        });
+        cEndAngle.addFocusListener(new FocusAdapter() {
+            @Override
+            public void focusLost(FocusEvent evt) {
+                setEndAngle(cEndAngle, UID);
+            }
+        });
+        // Get the current status of the property: End Angle
+        cEndAngle.setText(Double.toString((Double) GraphicController.getController()
+                    .getProperty(UID, GraphicObjectProperties.__GO_END_ANGLE__)));
+
+    }
+
+    /**
+    * Set End Angle
+    * @param cEndAngle JTextField
+    * @param UID id
+    */
+    private void setEndAngle(JTextField cEndAngle, String UID) {
+        try {
+            GraphicController.getController().setProperty(
+                    UID,
+                    GraphicObjectProperties.__GO_END_ANGLE__,
+                    Double.parseDouble(cEndAngle.getText()));
+        } catch (NumberFormatException e) {
+            cEndAngle.setText(Double.toString((Double) GraphicController.getController()
+                    .getProperty(UID, GraphicObjectProperties.__GO_END_ANGLE__)));
+        }
+    }
+}
\ No newline at end of file