Changeset 23269 in osm for applications/editors/josm


Ignore:
Timestamp:
2010-09-19T15:13:59+02:00 (14 years ago)
Author:
malcolmh
Message:

bug fixes

Location:
applications/editors/josm/plugins/toms/src/toms
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java

    r23268 r23269  
    6262
    6363public class SmpDialogAction extends JosmAction {
    64     private static final long serialVersionUID = -2976230949744302905L;
    65 
    66     /**
    67     * lokale Variable, private
    68     */
    69     private SmpDialogAction dia = null; // Variable für den Handle von
    70                                                                             // SmpDialogAction
    71     private Buoy buoy = null; // Variable für Objekte des Typs "Tonne" //
    72                                                         // @jve:decl-index=0:
    73     private boolean isOpen = false; // zeigt den Status des Dialogs an
    74     private Node onode = null; // gemerkter Knoten
    75     private Buoy obuoy = null; // gemerkte Tonne // @jve:decl-index=0:
    76     private JMenuItem SmpItem = null; // Info über item in der Werkzeugleiste
    77     private String smt = ""; // value vom key "seamark:type" // @jve:decl-index=0: //$NON-NLS-1$
    78     private String smb = ""; // value vom key "seamark" // @jve:decl-index=0: //$NON-NLS-1$
    79     private Collection<? extends OsmPrimitive> Selection = null; // @jve:decl-index=0:
    80     private OsmPrimitive SelNode = null;
    81     private String Os = ""; // @jve:decl-index=0: //$NON-NLS-1$
    82     private String UserHome = ""; // @jve:decl-index=0: //$NON-NLS-1$
    83 
    84     // SelectionChangedListner der in die Eventqueue von josm eingehängt wird
    85     private SelectionChangedListener SmpListener = new SelectionChangedListener() {
    86         public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
    87             Node node;
    88             Selection = newSelection;
    89 
    90             // System.out.println("hello");
    91             for (OsmPrimitive osm : Selection) {
    92                 if (osm instanceof Node) {
    93                     node = (Node) osm;
    94                     if (Selection.size() == 1)
    95                         // Absicherung gegen Doppelevents
    96                         if (node.compareTo(SelNode) != 0) {
    97                             SelNode = node;
    98                             parseSeaMark();
    99                             buoy.paintSign();
    100                         }
    101                 }
    102             }
    103 
    104             Selection = null;
    105 
    106         }
    107     };
    108 
    109     /**
    110     * lokale Variable der Maske
    111     */
    112     private JDialog dM01SeaMap = null;
    113     private JPanel pM01SeaMap = null;
    114     private JLabel lM01Head = null;
    115     private JLabel lM01Region = null;
    116     private JLabel lM02Region = null;
    117     public ButtonGroup bgM01Region = null;
    118     public JRadioButton rbM01RegionA = null;
    119     public JRadioButton rbM01RegionB = null;
    120     public JLabel lM01Icon = null; // Shape
    121     public JLabel lM02Icon = null; // Light
    122     public JLabel lM03Icon = null; // Reflector
    123     public JLabel lM04Icon = null; // Racon
    124     public JLabel lM05Icon = null; // Fog
    125     public JLabel lM06Icon = null; // Topmark
    126     public JLabel lM01NameMark = null;
    127     public JLabel lM01FireMark = null;
    128     public JLabel lM01FogMark = null;
    129     public JLabel lM01RadarMark = null;
    130     private JLabel lM01TypeOfMark = null;
    131     public JComboBox cbM01TypeOfMark = null;
    132     public JLabel lM01CatOfMark = null;
    133     public JComboBox cbM01CatOfMark = null;
    134     public JLabel lM01StyleOfMark = null;
    135     public JComboBox cbM01StyleOfMark = null;
    136     private JLabel lM01Name = null;
    137     public JTextField tfM01Name = null;
    138     private JLabel lM01Props02 = null;
    139     public JCheckBox cM01TopMark = null;
    140     public JComboBox cbM01TopMark = null;
    141     public JCheckBox cM01Radar = null;
    142     public JCheckBox cM01Racon = null;
    143     public JComboBox cbM01Racon = null;
    144     public JTextField tfM01Racon = null;
    145     public JLabel lM01Racon = null;
    146     public JCheckBox cM01Fog = null;
    147     public JComboBox cbM01Fog = null;
    148     public JLabel lM01FogGroup = null;
    149     public JTextField tfM01FogGroup = null;
    150     public JLabel lM01FogPeriod = null;
    151     public JTextField tfM01FogPeriod = null;
    152     public JCheckBox cM01Fired = null;
    153     public ButtonGroup bgM01Fired = null;
    154     public JRadioButton rbM01Fired1 = null;
    155     public JRadioButton rbM01FiredN = null;
    156     public JLabel lM01Kennung = null;
    157     public JComboBox cbM01Kennung = null;
    158     public JLabel lM01Height = null;
    159     public JTextField tfM01Height = null;
    160     public JLabel lM01Range = null;
    161     public JTextField tfM01Range = null;
    162     public JLabel lM01Group = null;
    163     public JTextField tfM01Group = null;
    164     public JLabel lM01RepeatTime = null;
    165     public JTextField tfM01RepeatTime = null;
    166     public JLabel lM01Sector = null;
    167     public JComboBox cbM01Sector = null;
    168     public JLabel lM01Colour = null;
    169     public JComboBox cbM01Colour = null;
    170     public JLabel lM01Bearing = null;
    171     public JTextField tfM01Bearing = null;
    172     public JTextField tfM02Bearing = null;
    173     public JTextField tfM01Radius = null;
    174     public JButton bM01Save = null;
    175     public JButton bM01Close = null;
    176     public JCheckBox cM01IconVisible = null;
    177     public JTextField sM01StatusBar = null;
    178 
    179     public boolean paintlock = false;
    180 
    181     public JMenuItem getSmpItem() {
    182         return SmpItem;
    183     }
    184 
    185     public void setSmpItem(JMenuItem smpItem) {
    186         SmpItem = smpItem;
    187     }
    188 
    189     public boolean isOpen() {
    190         return isOpen;
    191     }
    192 
    193     public void setOpen(boolean isOpen) {
    194         this.isOpen = isOpen;
    195     }
    196 
    197     public String getOs() {
    198         return Os;
    199     }
    200 
    201     public void setOs(String os) {
    202         Os = os;
    203     }
    204 
    205     public String getUserHome() {
    206         return UserHome;
    207     }
    208 
    209     public void setUserHome(String userHome) {
    210         UserHome = userHome;
    211     }
    212 
    213     public SmpDialogAction() {
    214         super(
    215                 Messages.getString("SmpDialogAction.4"), "Smp", Messages.getString("SmpDialogAction.0"), Shortcut //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    216                         .registerShortcut(
    217                                 "tools:Semarks", //$NON-NLS-1$
    218                                 tr("Tool: {0}", Messages.getString("SmpDialogAction.9")), KeyEvent.VK_S, //$NON-NLS-1$ //$NON-NLS-2$
    219                                 Shortcut.GROUP_EDIT, Shortcut.SHIFT_DEFAULT), true);
    220 
    221         dia = this;
    222         String str = Main.pref.get("mappaint.style.sources"); //$NON-NLS-1$
    223         if (!str.contains("dev.openseamap.org")) { //$NON-NLS-1$
    224             if (!str.isEmpty()) //$NON-NLS-1$
    225                 str += new String(new char[] { 0x1e });
    226             Main.pref.put("mappaint.style.sources", str //$NON-NLS-1$
    227                     + "http://dev.openseamap.org/josm/seamark_styles.xml"); //$NON-NLS-1$
    228         }
    229         str = Main.pref.get("color.background"); //$NON-NLS-1$
    230         if (str.equals("#000000") || str.isEmpty()) //$NON-NLS-1$ //$NON-NLS-2$
    231             Main.pref.put("color.background", "#606060"); //$NON-NLS-1$ //$NON-NLS-2$
    232     }
    233 
    234     public void CloseDialog() {
    235         onode = null;
    236         DataSet.removeSelectionListener(SmpListener);
    237         Selection = null;
    238 
    239         if (isOpen)
    240             dM01SeaMap.dispose();
    241         isOpen = false;
    242 
    243     }
    244 
    245     public void actionPerformed(ActionEvent e) {
    246 
    247         /*
    248         * int option = JOptionPane.showConfirmDialog(Main.parent,
    249         * tr("THIS IS EXPERIMENTAL. Save your work and verify before uploading.\n"
    250         * + "Are you really sure to continue?"),
    251         * tr("Please abort if you are not sure"), JOptionPane.YES_NO_OPTION,
    252         * JOptionPane.WARNING_MESSAGE);
    253          *
    254         * if (option != JOptionPane.YES_OPTION) { return; }
    255         */
    256 
    257         onode = null;
    258         obuoy = null;
    259 
    260         SwingUtilities.invokeLater(new Runnable() {
    261             public void run() {
    262                 JDialog dialog = getDM01SeaMap();
    263 
    264                 if (SmpItem == null) {
    265                 }
    266                 dialog.setVisible(true);
    267             }
    268         });
    269 
    270         setOpen(true);
    271 
    272         if (SmpItem == null) {
    273             return;
    274         }
    275         SmpItem.setEnabled(false);
    276 
    277         // Ausprobe: Möglichkeit der Benachrichtigung, wenn etwas neu
    278         // selektiert wird (ueber SelectionChangedListener)
    279         // private Collection<? extends OsmPrimitive> sel;
    280         // siehe org.openstreetmap.josm.plugins.osb -> OsbLayer.java
    281         // Einhängen des Listeners in die Eventqueue von josm
    282         DataSet.addSelectionListener(SmpListener);
    283     }
    284 
    285     private void PicRebuild() {
    286 
    287         DataSet ds = Main.main.getCurrentDataSet();
    288 
    289         if (obuoy == null) {
    290             return;
    291         }
    292 
    293         Node n = obuoy.getNode();
    294 
    295         if (n != null) {
    296             Command c;
    297 
    298             if (smb != "") { //$NON-NLS-1$
    299 
    300                 c = new ChangePropertyCommand(n, "seamark", smb); //$NON-NLS-1$
    301                 c.executeCommand();
    302                 ds.fireSelectionChanged();
    303 
    304                 smb = ""; //$NON-NLS-1$
    305             }
    306 
    307             if (smt != "") { //$NON-NLS-1$
    308 
    309                 c = new ChangePropertyCommand(n, "seamark:type", smt); //$NON-NLS-1$
    310                 c.executeCommand();
    311                 ds.fireSelectionChanged();
    312 
    313                 smt = ""; //$NON-NLS-1$
    314             }
    315         }
    316 
    317         obuoy = null;
    318 
    319     }
    320 
    321     private void parseSeaMark() {
    322 
    323         int nodes = 0;
    324         Node node = null;
    325         Collection<Node> selection = null;
    326         Map<String, String> keys;
    327         DataSet ds;
    328 
    329         ds = Main.main.getCurrentDataSet();
    330 
    331         if (ds == null) {
    332             buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.26")); //$NON-NLS-1$
    333             buoy.setNode(null);
    334             return;
    335         }
    336 
    337         selection = ds.getSelectedNodes();
    338         nodes = selection.size();
    339 
    340         if (nodes == 0) {
    341             buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.27")); //$NON-NLS-1$
    342             buoy.setNode(null);
    343             return;
    344         }
    345 
    346         if (nodes > 1) {
    347             buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.28")); //$NON-NLS-1$
    348             buoy.setNode(null);
    349             return;
    350         }
    351 
    352         Iterator<Node> it = selection.iterator();
    353         node = it.next();
    354 
    355         if (onode != null)
    356             if (node.equals(onode))
    357                 return;
    358 
    359         // Knoten wurde gewechselt -> die alten tags (benutzt zum Ausblenden der
    360         // Pictogramme) wiederherstellen
    361         if (obuoy != null)
    362             PicRebuild();
    363 
    364         onode = node;
    365 
    366         cM01IconVisible.setEnabled(true);
    367         cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
    368                 "/images/Auge.png"))); //$NON-NLS-1$
    369 
    370         cbM01TypeOfMark.setEnabled(true);
    371 
    372         // Soweit das Vorspiel. Ab hier beginnt das Parsen
    373         String type = ""; //$NON-NLS-1$
    374         String str = ""; //$NON-NLS-1$
    375 
    376         keys = node.getKeys();
    377 
    378         // vorsorglich den Namen holen und verwenden, wenn es ein
    379         // Seezeichen ist. Name kann durch die weiteren Tags ueber-
    380         // schrieben werden
    381 
    382         if (keys.containsKey("seamark:type")) //$NON-NLS-1$
    383             type = keys.get("seamark:type"); //$NON-NLS-1$
    384 
    385         if (type.equals("buoy_lateral") || type.equals("beacon_lateral") //$NON-NLS-1$ //$NON-NLS-2$
    386                 || keys.containsKey("seamark:buoy_lateral:category") //$NON-NLS-1$
    387                 || keys.containsKey("seamark:buoy_lateral:shape") //$NON-NLS-1$
    388                 || keys.containsKey("seamark:buoy_lateral:colour") //$NON-NLS-1$
    389                 || keys.containsKey("seamark:beacon_lateral:category") //$NON-NLS-1$
    390                 || keys.containsKey("seamark:beacon_lateral:shape") //$NON-NLS-1$
    391                 || keys.containsKey("seamark:beacon_lateral:colour")) { //$NON-NLS-1$
    392             buoy = new BuoyLat(this, node);
    393             return;
    394 
    395         } else if (type.equals("buoy_cardinal") || type.equals("beacon_cardinal") //$NON-NLS-1$ //$NON-NLS-2$
    396                 || keys.containsKey("seamark:buoy_cardinal:category") //$NON-NLS-1$
    397                 || keys.containsKey("seamark:buoy_cardinal:shape") //$NON-NLS-1$
    398                 || keys.containsKey("seamark:buoy_cardinal:colour") //$NON-NLS-1$
    399                 || keys.containsKey("seamark:beacon_cardinal:category") //$NON-NLS-1$
    400                 || keys.containsKey("seamark:beacon_cardinal:shape") //$NON-NLS-1$
    401                 || keys.containsKey("seamark:beacon_cardinal:colour")) { //$NON-NLS-1$
    402             buoy = new BuoyCard(this, node);
    403             return;
    404 
    405         } else if (type.equals("buoy_safe_water") //$NON-NLS-1$
    406                 || type.equals("beacon_safe_water") //$NON-NLS-1$
    407                 || keys.containsKey("seamark:buoy_safe_water:shape") //$NON-NLS-1$
    408                 || keys.containsKey("seamark:buoy_safe_water:colour") //$NON-NLS-1$
    409                 || keys.containsKey("seamark:beacon_safe_water:shape") //$NON-NLS-1$
    410                 || keys.containsKey("seamark:beacon_safe_water:colour")) { //$NON-NLS-1$
    411             buoy = new BuoySaw(this, node);
    412             return;
    413 
    414         } else if (type.equals("buoy_special_purpose") //$NON-NLS-1$
    415                 || type.equals("beacon_special_purpose") //$NON-NLS-1$
    416                 || keys.containsKey("seamark:buoy_special_purpose:shape") //$NON-NLS-1$
    417                 || keys.containsKey("seamark:buoy_special_purpose:colour") //$NON-NLS-1$
    418                 || keys.containsKey("seamark:beacon_special_purpose:shape") //$NON-NLS-1$
    419                 || keys.containsKey("seamark:beacon_special_purpose:colour")) { //$NON-NLS-1$
    420             buoy = new BuoySpec(this, node);
    421             return;
    422 
    423         } else if (type.equals("buoy_isolated_danger") //$NON-NLS-1$
    424                 || type.equals("beacon_isolated_danger") //$NON-NLS-1$
    425                 || keys.containsKey("seamark:buoy_isolated_danger:shape") //$NON-NLS-1$
    426                 || keys.containsKey("seamark:buoy_isolated_danger:colour") //$NON-NLS-1$
    427                 || keys.containsKey("seamark:beacon_isolated_danger:shape") //$NON-NLS-1$
    428                 || keys.containsKey("seamark:beacon_isolated_danger:colour")) { //$NON-NLS-1$
    429             buoy = new BuoyIsol(this, node);
    430             return;
    431 
    432         } else if (type.equals("landmark") || type.equals("light_vessel") //$NON-NLS-1$
    433                 || type.equals("light_major") || type.equals("light_minor")) { //$NON-NLS-1$
    434             buoy = new BuoyNota(this, node);
    435             return;
    436 
    437         } else if (type.equals("light_float")) { //$NON-NLS-1$
    438             if (keys.containsKey("seamark:light_float:colour")) { //$NON-NLS-1$
    439                 str = keys.get("seamark:light_float:colour"); //$NON-NLS-1$
    440                 if (str.equals("red") || str.equals("green") //$NON-NLS-1$ //$NON-NLS-2$
    441                         || str.equals("red;green;red") || str.equals("green;red;green")) { //$NON-NLS-1$ //$NON-NLS-2$
    442                     buoy = new BuoyLat(this, node);
    443                     return;
    444                 } else if (str.equals("black;yellow") //$NON-NLS-1$
    445                         || str.equals("black;yellow;black") || str.equals("yellow;black") //$NON-NLS-1$ //$NON-NLS-2$
    446                         || str.equals("yellow;black;yellow")) { //$NON-NLS-1$
    447                     buoy = new BuoyCard(this, node);
    448                     return;
    449                 } else if (str.equals("black;red;black")) { //$NON-NLS-1$
    450                     buoy = new BuoyIsol(this, node);
    451                     return;
    452                 } else if (str.equals("red;white")) { //$NON-NLS-1$
    453                     buoy = new BuoySaw(this, node);
    454                     return;
    455                 } else if (str.equals("yellow")) { //$NON-NLS-1$
    456                     buoy = new BuoySpec(this, node);
    457                     return;
    458                 }
    459             } else if (keys.containsKey("seamark:light_float:topmark:shape")) { //$NON-NLS-1$
    460                 str = keys.get("seamark:light_float:topmark:shape"); //$NON-NLS-1$
    461                 if (str.equals("cylinder") || str.equals("cone, point up")) { //$NON-NLS-1$ //$NON-NLS-2$
    462                     buoy = new BuoyLat(this, node);
    463                     return;
    464                 }
    465             } else if (keys.containsKey("seamark:light_float:topmark:colour")) { //$NON-NLS-1$
    466                 str = keys.get("seamark:light_float:topmark:colour"); //$NON-NLS-1$
    467                 if (str.equals("red") || str.equals("green")) { //$NON-NLS-1$ //$NON-NLS-2$
    468                     buoy = new BuoyLat(this, node);
    469                     return;
    470                 }
    471             }
    472         }
     64        private static final long serialVersionUID = -2976230949744302905L;
     65
     66        /**
     67        * lokale Variable, private
     68        */
     69        private SmpDialogAction dia = null; // Variable für den Handle von
     70                                                                                                                                                        // SmpDialogAction
     71        private Buoy buoy = null; // Variable für Objekte des Typs "Tonne" //
     72                                                                                                                // @jve:decl-index=0:
     73        private boolean isOpen = false; // zeigt den Status des Dialogs an
     74        private Node onode = null; // gemerkter Knoten
     75        private Buoy obuoy = null; // gemerkte Tonne // @jve:decl-index=0:
     76        private JMenuItem SmpItem = null; // Info über item in der Werkzeugleiste
     77        private String smt = ""; // value vom key "seamark:type" // @jve:decl-index=0: //$NON-NLS-1$
     78        private String smb = ""; // value vom key "seamark" // @jve:decl-index=0: //$NON-NLS-1$
     79        private Collection<? extends OsmPrimitive> Selection = null; // @jve:decl-index=0:
     80        private OsmPrimitive SelNode = null;
     81        private String Os = ""; // @jve:decl-index=0: //$NON-NLS-1$
     82        private String UserHome = ""; // @jve:decl-index=0: //$NON-NLS-1$
     83
     84        // SelectionChangedListner der in die Eventqueue von josm eingehängt wird
     85        private SelectionChangedListener SmpListener = new SelectionChangedListener() {
     86                public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
     87                        Node node;
     88                        Selection = newSelection;
     89
     90                        // System.out.println("hello");
     91                        for (OsmPrimitive osm : Selection) {
     92                                if (osm instanceof Node) {
     93                                        node = (Node) osm;
     94                                        if (Selection.size() == 1)
     95                                                // Absicherung gegen Doppelevents
     96                                                if (node.compareTo(SelNode) != 0) {
     97                                                        SelNode = node;
     98                                                        parseSeaMark();
     99                                                        buoy.paintSign();
     100                                                }
     101                                }
     102                        }
     103
     104                        Selection = null;
     105
     106                }
     107        };
     108
     109        /**
     110        * lokale Variable der Maske
     111        */
     112        private JDialog dM01SeaMap = null;
     113        private JPanel pM01SeaMap = null;
     114        private JLabel lM01Head = null;
     115        private JLabel lM01Region = null;
     116        private JLabel lM02Region = null;
     117        public ButtonGroup bgM01Region = null;
     118        public JRadioButton rbM01RegionA = null;
     119        public JRadioButton rbM01RegionB = null;
     120        public JLabel lM01Icon = null; // Shape
     121        public JLabel lM02Icon = null; // Light
     122        public JLabel lM03Icon = null; // Reflector
     123        public JLabel lM04Icon = null; // Racon
     124        public JLabel lM05Icon = null; // Fog
     125        public JLabel lM06Icon = null; // Topmark
     126        public JLabel lM01NameMark = null;
     127        public JLabel lM01FireMark = null;
     128        public JLabel lM01FogMark = null;
     129        public JLabel lM01RadarMark = null;
     130        private JLabel lM01TypeOfMark = null;
     131        public JComboBox cbM01TypeOfMark = null;
     132        public JLabel lM01CatOfMark = null;
     133        public JComboBox cbM01CatOfMark = null;
     134        public JLabel lM01StyleOfMark = null;
     135        public JComboBox cbM01StyleOfMark = null;
     136        private JLabel lM01Name = null;
     137        public JTextField tfM01Name = null;
     138        private JLabel lM01Props02 = null;
     139        public JCheckBox cM01TopMark = null;
     140        public JComboBox cbM01TopMark = null;
     141        public JCheckBox cM01Radar = null;
     142        public JCheckBox cM01Racon = null;
     143        public JComboBox cbM01Racon = null;
     144        public JTextField tfM01Racon = null;
     145        public JLabel lM01Racon = null;
     146        public JCheckBox cM01Fog = null;
     147        public JComboBox cbM01Fog = null;
     148        public JLabel lM01FogGroup = null;
     149        public JTextField tfM01FogGroup = null;
     150        public JLabel lM01FogPeriod = null;
     151        public JTextField tfM01FogPeriod = null;
     152        public JCheckBox cM01Fired = null;
     153        public ButtonGroup bgM01Fired = null;
     154        public JRadioButton rbM01Fired1 = null;
     155        public JRadioButton rbM01FiredN = null;
     156        public JLabel lM01Kennung = null;
     157        public JComboBox cbM01Kennung = null;
     158        public JLabel lM01Height = null;
     159        public JTextField tfM01Height = null;
     160        public JLabel lM01Range = null;
     161        public JTextField tfM01Range = null;
     162        public JLabel lM01Group = null;
     163        public JTextField tfM01Group = null;
     164        public JLabel lM01RepeatTime = null;
     165        public JTextField tfM01RepeatTime = null;
     166        public JLabel lM01Sector = null;
     167        public JComboBox cbM01Sector = null;
     168        public JLabel lM01Colour = null;
     169        public JComboBox cbM01Colour = null;
     170        public JLabel lM01Bearing = null;
     171        public JTextField tfM01Bearing = null;
     172        public JTextField tfM02Bearing = null;
     173        public JTextField tfM01Radius = null;
     174        public JButton bM01Save = null;
     175        public JButton bM01Close = null;
     176        public JCheckBox cM01IconVisible = null;
     177        public JTextField sM01StatusBar = null;
     178
     179        public boolean paintlock = false;
     180
     181        public JMenuItem getSmpItem() {
     182                return SmpItem;
     183        }
     184
     185        public void setSmpItem(JMenuItem smpItem) {
     186                SmpItem = smpItem;
     187        }
     188
     189        public boolean isOpen() {
     190                return isOpen;
     191        }
     192
     193        public void setOpen(boolean isOpen) {
     194                this.isOpen = isOpen;
     195        }
     196
     197        public String getOs() {
     198                return Os;
     199        }
     200
     201        public void setOs(String os) {
     202                Os = os;
     203        }
     204
     205        public String getUserHome() {
     206                return UserHome;
     207        }
     208
     209        public void setUserHome(String userHome) {
     210                UserHome = userHome;
     211        }
     212
     213        public SmpDialogAction() {
     214                super(
     215                                Messages.getString("SmpDialogAction.4"), "Smp", Messages.getString("SmpDialogAction.0"), Shortcut //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     216                                                .registerShortcut(
     217                                                                "tools:Semarks", //$NON-NLS-1$
     218                                                                tr("Tool: {0}", Messages.getString("SmpDialogAction.9")), KeyEvent.VK_S, //$NON-NLS-1$ //$NON-NLS-2$
     219                                                                Shortcut.GROUP_EDIT, Shortcut.SHIFT_DEFAULT), true);
     220
     221                dia = this;
     222                String str = Main.pref.get("mappaint.style.sources"); //$NON-NLS-1$
     223                if (!str.contains("dev.openseamap.org")) { //$NON-NLS-1$
     224                        if (!str.isEmpty()) //$NON-NLS-1$
     225                                str += new String(new char[] { 0x1e });
     226                        Main.pref.put("mappaint.style.sources", str //$NON-NLS-1$
     227                                        + "http://dev.openseamap.org/josm/seamark_styles.xml"); //$NON-NLS-1$
     228                }
     229                str = Main.pref.get("color.background"); //$NON-NLS-1$
     230                if (str.equals("#000000") || str.isEmpty()) //$NON-NLS-1$ //$NON-NLS-2$
     231                        Main.pref.put("color.background", "#606060"); //$NON-NLS-1$ //$NON-NLS-2$
     232        }
     233
     234        public void CloseDialog() {
     235                onode = null;
     236                DataSet.removeSelectionListener(SmpListener);
     237                Selection = null;
     238
     239                if (isOpen)
     240                        dM01SeaMap.dispose();
     241                isOpen = false;
     242
     243        }
     244
     245        public void actionPerformed(ActionEvent e) {
     246
     247                /*
     248                * int option = JOptionPane.showConfirmDialog(Main.parent,
     249                * tr("THIS IS EXPERIMENTAL. Save your work and verify before uploading.\n"
     250                * + "Are you really sure to continue?"),
     251                * tr("Please abort if you are not sure"), JOptionPane.YES_NO_OPTION,
     252                * JOptionPane.WARNING_MESSAGE);
     253                 *
     254                * if (option != JOptionPane.YES_OPTION) { return; }
     255                */
     256
     257                onode = null;
     258                obuoy = null;
     259
     260                SwingUtilities.invokeLater(new Runnable() {
     261                        public void run() {
     262                                JDialog dialog = getDM01SeaMap();
     263
     264                                if (SmpItem == null) {
     265                                }
     266                                dialog.setVisible(true);
     267                        }
     268                });
     269
     270                setOpen(true);
     271
     272                if (SmpItem == null) {
     273                        return;
     274                }
     275                SmpItem.setEnabled(false);
     276
     277                // Ausprobe: Möglichkeit der Benachrichtigung, wenn etwas neu
     278                // selektiert wird (ueber SelectionChangedListener)
     279                // private Collection<? extends OsmPrimitive> sel;
     280                // siehe org.openstreetmap.josm.plugins.osb -> OsbLayer.java
     281                // Einhängen des Listeners in die Eventqueue von josm
     282                DataSet.addSelectionListener(SmpListener);
     283        }
     284
     285        private void PicRebuild() {
     286
     287                DataSet ds = Main.main.getCurrentDataSet();
     288
     289                if (obuoy == null) {
     290                        return;
     291                }
     292
     293                Node n = obuoy.getNode();
     294
     295                if (n != null) {
     296                        Command c;
     297
     298                        if (smb != "") { //$NON-NLS-1$
     299
     300                                c = new ChangePropertyCommand(n, "seamark", smb); //$NON-NLS-1$
     301                                c.executeCommand();
     302                                ds.fireSelectionChanged();
     303
     304                                smb = ""; //$NON-NLS-1$
     305                        }
     306
     307                        if (smt != "") { //$NON-NLS-1$
     308
     309                                c = new ChangePropertyCommand(n, "seamark:type", smt); //$NON-NLS-1$
     310                                c.executeCommand();
     311                                ds.fireSelectionChanged();
     312
     313                                smt = ""; //$NON-NLS-1$
     314                        }
     315                }
     316
     317                obuoy = null;
     318
     319        }
     320
     321        private void parseSeaMark() {
     322
     323                int nodes = 0;
     324                Node node = null;
     325                Collection<Node> selection = null;
     326                Map<String, String> keys;
     327                DataSet ds;
     328
     329                ds = Main.main.getCurrentDataSet();
     330
     331                if (ds == null) {
     332                        buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.26")); //$NON-NLS-1$
     333                        buoy.setNode(null);
     334                        return;
     335                }
     336
     337                selection = ds.getSelectedNodes();
     338                nodes = selection.size();
     339
     340                if (nodes == 0) {
     341                        buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.27")); //$NON-NLS-1$
     342                        buoy.setNode(null);
     343                        return;
     344                }
     345
     346                if (nodes > 1) {
     347                        buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.28")); //$NON-NLS-1$
     348                        buoy.setNode(null);
     349                        return;
     350                }
     351
     352                Iterator<Node> it = selection.iterator();
     353                node = it.next();
     354
     355                if (onode != null)
     356                        if (node.equals(onode))
     357                                return;
     358
     359                // Knoten wurde gewechselt -> die alten tags (benutzt zum Ausblenden der
     360                // Pictogramme) wiederherstellen
     361                if (obuoy != null)
     362                        PicRebuild();
     363
     364                onode = node;
     365
     366                cM01IconVisible.setEnabled(true);
     367                cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
     368                                "/images/Auge.png"))); //$NON-NLS-1$
     369
     370                cbM01TypeOfMark.setEnabled(true);
     371
     372                // Soweit das Vorspiel. Ab hier beginnt das Parsen
     373                String type = ""; //$NON-NLS-1$
     374                String str = ""; //$NON-NLS-1$
     375
     376                keys = node.getKeys();
     377
     378                // vorsorglich den Namen holen und verwenden, wenn es ein
     379                // Seezeichen ist. Name kann durch die weiteren Tags ueber-
     380                // schrieben werden
     381
     382                if (keys.containsKey("seamark:type")) //$NON-NLS-1$
     383                        type = keys.get("seamark:type"); //$NON-NLS-1$
     384
     385                if (type.equals("buoy_lateral") || type.equals("beacon_lateral") //$NON-NLS-1$ //$NON-NLS-2$
     386                                || keys.containsKey("seamark:buoy_lateral:category") //$NON-NLS-1$
     387                                || keys.containsKey("seamark:buoy_lateral:shape") //$NON-NLS-1$
     388                                || keys.containsKey("seamark:buoy_lateral:colour") //$NON-NLS-1$
     389                                || keys.containsKey("seamark:beacon_lateral:category") //$NON-NLS-1$
     390                                || keys.containsKey("seamark:beacon_lateral:shape") //$NON-NLS-1$
     391                                || keys.containsKey("seamark:beacon_lateral:colour")) { //$NON-NLS-1$
     392                        buoy = new BuoyLat(this, node);
     393                        return;
     394
     395                } else if (type.equals("buoy_cardinal") || type.equals("beacon_cardinal") //$NON-NLS-1$ //$NON-NLS-2$
     396                                || keys.containsKey("seamark:buoy_cardinal:category") //$NON-NLS-1$
     397                                || keys.containsKey("seamark:buoy_cardinal:shape") //$NON-NLS-1$
     398                                || keys.containsKey("seamark:buoy_cardinal:colour") //$NON-NLS-1$
     399                                || keys.containsKey("seamark:beacon_cardinal:category") //$NON-NLS-1$
     400                                || keys.containsKey("seamark:beacon_cardinal:shape") //$NON-NLS-1$
     401                                || keys.containsKey("seamark:beacon_cardinal:colour")) { //$NON-NLS-1$
     402                        buoy = new BuoyCard(this, node);
     403                        return;
     404
     405                } else if (type.equals("buoy_safe_water") //$NON-NLS-1$
     406                                || type.equals("beacon_safe_water") //$NON-NLS-1$
     407                                || keys.containsKey("seamark:buoy_safe_water:shape") //$NON-NLS-1$
     408                                || keys.containsKey("seamark:buoy_safe_water:colour") //$NON-NLS-1$
     409                                || keys.containsKey("seamark:beacon_safe_water:shape") //$NON-NLS-1$
     410                                || keys.containsKey("seamark:beacon_safe_water:colour")) { //$NON-NLS-1$
     411                        buoy = new BuoySaw(this, node);
     412                        return;
     413
     414                } else if (type.equals("buoy_special_purpose") //$NON-NLS-1$
     415                                || type.equals("beacon_special_purpose") //$NON-NLS-1$
     416                                || keys.containsKey("seamark:buoy_special_purpose:shape") //$NON-NLS-1$
     417                                || keys.containsKey("seamark:buoy_special_purpose:colour") //$NON-NLS-1$
     418                                || keys.containsKey("seamark:beacon_special_purpose:shape") //$NON-NLS-1$
     419                                || keys.containsKey("seamark:beacon_special_purpose:colour")) { //$NON-NLS-1$
     420                        buoy = new BuoySpec(this, node);
     421                        return;
     422
     423                } else if (type.equals("buoy_isolated_danger") //$NON-NLS-1$
     424                                || type.equals("beacon_isolated_danger") //$NON-NLS-1$
     425                                || keys.containsKey("seamark:buoy_isolated_danger:shape") //$NON-NLS-1$
     426                                || keys.containsKey("seamark:buoy_isolated_danger:colour") //$NON-NLS-1$
     427                                || keys.containsKey("seamark:beacon_isolated_danger:shape") //$NON-NLS-1$
     428                                || keys.containsKey("seamark:beacon_isolated_danger:colour")) { //$NON-NLS-1$
     429                        buoy = new BuoyIsol(this, node);
     430                        return;
     431
     432                } else if (type.equals("landmark") || type.equals("light_vessel") //$NON-NLS-1$
     433                                || type.equals("light_major") || type.equals("light_minor")) { //$NON-NLS-1$
     434                        buoy = new BuoyNota(this, node);
     435                        return;
     436
     437                } else if (type.equals("light_float")) { //$NON-NLS-1$
     438                        if (keys.containsKey("seamark:light_float:colour")) { //$NON-NLS-1$
     439                                str = keys.get("seamark:light_float:colour"); //$NON-NLS-1$
     440                                if (str.equals("red") || str.equals("green") //$NON-NLS-1$ //$NON-NLS-2$
     441                                                || str.equals("red;green;red") || str.equals("green;red;green")) { //$NON-NLS-1$ //$NON-NLS-2$
     442                                        buoy = new BuoyLat(this, node);
     443                                        return;
     444                                } else if (str.equals("black;yellow") //$NON-NLS-1$
     445                                                || str.equals("black;yellow;black") || str.equals("yellow;black") //$NON-NLS-1$ //$NON-NLS-2$
     446                                                || str.equals("yellow;black;yellow")) { //$NON-NLS-1$
     447                                        buoy = new BuoyCard(this, node);
     448                                        return;
     449                                } else if (str.equals("black;red;black")) { //$NON-NLS-1$
     450                                        buoy = new BuoyIsol(this, node);
     451                                        return;
     452                                } else if (str.equals("red;white")) { //$NON-NLS-1$
     453                                        buoy = new BuoySaw(this, node);
     454                                        return;
     455                                } else if (str.equals("yellow")) { //$NON-NLS-1$
     456                                        buoy = new BuoySpec(this, node);
     457                                        return;
     458                                }
     459                        } else if (keys.containsKey("seamark:light_float:topmark:shape")) { //$NON-NLS-1$
     460                                str = keys.get("seamark:light_float:topmark:shape"); //$NON-NLS-1$
     461                                if (str.equals("cylinder") || str.equals("cone, point up")) { //$NON-NLS-1$ //$NON-NLS-2$
     462                                        buoy = new BuoyLat(this, node);
     463                                        return;
     464                                }
     465                        } else if (keys.containsKey("seamark:light_float:topmark:colour")) { //$NON-NLS-1$
     466                                str = keys.get("seamark:light_float:topmark:colour"); //$NON-NLS-1$
     467                                if (str.equals("red") || str.equals("green")) { //$NON-NLS-1$ //$NON-NLS-2$
     468                                        buoy = new BuoyLat(this, node);
     469                                        return;
     470                                }
     471                        }
     472                }
    473473
    474474                buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.91")); //$NON-NLS-1$
     
    478478        }
    479479
    480     private JDialog getDM01SeaMap() {
    481 
    482         if (dM01SeaMap == null) {
    483             dM01SeaMap = new JDialog();
    484             dM01SeaMap.setSize(new Dimension(400, 400));
    485             dM01SeaMap.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    486             dM01SeaMap.setModal(false);
    487             dM01SeaMap.setResizable(false);
    488             dM01SeaMap.setContentPane(getPM01SeaMap());
    489             dM01SeaMap.setTitle(Messages.getString("SmpDialogAction.9")); //$NON-NLS-1$
    490             dM01SeaMap.setVisible(false);
    491             dM01SeaMap.setAlwaysOnTop(true);
    492             dM01SeaMap.addWindowListener(new java.awt.event.WindowAdapter() {
    493                 public void windowClosing(java.awt.event.WindowEvent e) {
    494 
    495                     // Pictogramme wiederherstellen und aufraeumen
    496                     if (obuoy != null)
    497                         PicRebuild();
    498                     // Deaktivierung des Listeners
    499                     DataSet.removeSelectionListener(SmpListener);
    500                     Selection = null;
    501 
    502                     SmpItem.setEnabled(true);
    503                 }
    504 
    505                 public void windowActivated(WindowEvent arg0) {
    506                     parseSeaMark();
    507                     buoy.paintSign();
    508                 }
    509             });
    510         }
    511         return dM01SeaMap;
    512     }
    513 
    514     private JPanel getPM01SeaMap() {
    515         if (pM01SeaMap == null) {
    516 
    517             lM01Icon = new JLabel();
    518             lM01Icon.setBounds(new Rectangle(220, 20, 150, 200));
    519             lM01Icon.setIcon(null);
    520             lM01Icon.setText(""); //$NON-NLS-1$
    521 
    522             lM02Icon = new JLabel();
    523             lM02Icon.setBounds(new Rectangle(220, 20, 150, 200));
    524             lM02Icon.setIcon(null);
    525             lM02Icon.setText(""); //$NON-NLS-1$
    526 
    527             lM03Icon = new JLabel();
    528             lM03Icon.setBounds(new Rectangle(220, 20, 150, 200));
    529             lM03Icon.setIcon(null);
    530             lM03Icon.setText(""); //$NON-NLS-1$
    531 
    532             lM04Icon = new JLabel();
    533             lM04Icon.setBounds(new Rectangle(220, 20, 150, 200));
    534             lM04Icon.setIcon(null);
    535             lM04Icon.setText(""); //$NON-NLS-1$
    536 
    537             lM05Icon = new JLabel();
    538             lM05Icon.setBounds(new Rectangle(220, 20, 150, 200));
    539             lM05Icon.setIcon(null);
    540             lM05Icon.setText(""); //$NON-NLS-1$
    541 
    542             lM06Icon = new JLabel();
    543             lM06Icon.setBounds(new Rectangle(220, 20, 150, 200));
    544             lM06Icon.setIcon(null);
    545             lM06Icon.setText(""); //$NON-NLS-1$
    546 
    547             lM01FireMark = new JLabel();
    548             lM01FireMark.setBounds(new Rectangle(315, 85, 80, 20));
    549             lM01FireMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
    550             lM01FireMark.setText(""); //$NON-NLS-1$
    551 
    552             lM01NameMark = new JLabel();
    553             lM01NameMark.setBounds(new Rectangle(315, 65, 80, 20));
    554             lM01NameMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
    555             lM01NameMark.setText(""); //$NON-NLS-1$
    556 
    557             lM01FogMark = new JLabel();
    558             lM01FogMark.setBounds(new Rectangle(220, 85, 70, 20));
    559             lM01FogMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
    560             lM01FogMark.setText(""); //$NON-NLS-1$
    561 
    562             lM01RadarMark = new JLabel();
    563             lM01RadarMark.setBounds(new Rectangle(230, 65, 70, 20));
    564             lM01RadarMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
    565             lM01RadarMark.setText(""); //$NON-NLS-1$
    566 
    567             lM01Head = new JLabel();
    568             lM01Head.setBounds(new Rectangle(5, 3, 316, 16));
    569             lM01Head.setText(Messages.getString("SmpDialogAction.97")); //$NON-NLS-1$
    570 
    571             lM01Region = new JLabel();
    572             lM01Region.setBounds(new Rectangle(220, 7, 120, 16));
    573             lM01Region.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    574             lM01Region.setText(Messages.getString("SmpDialogAction.99")); //$NON-NLS-1$
    575 
    576             lM02Region = new JLabel();
    577             lM02Region.setBounds(new Rectangle(270, 7, 120, 16));
    578             lM02Region.setFont(new Font("Dialog", Font.BOLD, 12)); //$NON-NLS-1$
    579             lM02Region.setText(Messages.getString("SmpDialogAction.101")); //$NON-NLS-1$
    580 
    581             lM01TypeOfMark = new JLabel();
    582             lM01TypeOfMark.setBounds(new Rectangle(5, 28, 120, 16));
    583             lM01TypeOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    584             lM01TypeOfMark.setText(Messages.getString("SmpDialogAction.103")); //$NON-NLS-1$
    585 
    586             lM01CatOfMark = new JLabel();
    587             lM01CatOfMark.setBounds(new Rectangle(5, 58, 120, 16));
    588             lM01CatOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    589             lM01CatOfMark.setText(Messages.getString("SmpDialogAction.1")); //$NON-NLS-1$
    590 
    591             lM01StyleOfMark = new JLabel();
    592             lM01StyleOfMark.setBounds(new Rectangle(5, 88, 148, 16));
    593             lM01StyleOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    594             lM01StyleOfMark.setText(Messages.getString("SmpDialogAction.107")); //$NON-NLS-1$
    595 
    596             lM01Name = new JLabel();
    597             lM01Name.setBounds(new Rectangle(5, 120, 82, 16));
    598             lM01Name.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    599             lM01Name.setText(Messages.getString("SmpDialogAction.109")); //$NON-NLS-1$
    600 
    601             lM01Props02 = new JLabel();
    602             lM01Props02.setBounds(new Rectangle(5, 150, 172, 16));
    603             lM01Props02.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    604             lM01Props02.setText(Messages.getString("SmpDialogAction.111")); //$NON-NLS-1$
    605 
    606             lM01Racon = new JLabel();
    607             lM01Racon.setBounds(new Rectangle(335, 195, 65, 20));
    608             lM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    609             lM01Racon.setText(Messages.getString("SmpDialogAction.113")); //$NON-NLS-1$
    610 
    611             lM01FogGroup = new JLabel();
    612             lM01FogGroup.setBounds(new Rectangle(190, 220, 100, 20));
    613             lM01FogGroup.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    614             lM01FogGroup.setText(Messages.getString("SmpDialogAction.115")); //$NON-NLS-1$
    615 
    616             lM01FogPeriod = new JLabel();
    617             lM01FogPeriod.setBounds(new Rectangle(300, 220, 100, 20));
    618             lM01FogPeriod.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    619             lM01FogPeriod.setText(Messages.getString("SmpDialogAction.117")); //$NON-NLS-1$
    620 
    621             lM01Kennung = new JLabel();
    622             lM01Kennung.setBounds(new Rectangle(240, 245, 60, 20));
    623             lM01Kennung.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    624             lM01Kennung.setText(Messages.getString("SmpDialogAction.119")); //$NON-NLS-1$
    625 
    626             lM01Height = new JLabel();
    627             lM01Height.setBounds(new Rectangle(10, 270, 100, 20));
    628             lM01Height.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    629             lM01Height.setText(Messages.getString("SmpDialogAction.121")); //$NON-NLS-1$
    630 
    631             lM01Range = new JLabel();
    632             lM01Range.setBounds(new Rectangle(108, 270, 100, 20));
    633             lM01Range.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    634             lM01Range.setText(Messages.getString("SmpDialogAction.123")); //$NON-NLS-1$
    635 
    636             lM01Group = new JLabel();
    637             lM01Group.setBounds(new Rectangle(204, 270, 100, 20));
    638             lM01Group.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    639             lM01Group.setText(Messages.getString("SmpDialogAction.125")); //$NON-NLS-1$
    640 
    641             lM01RepeatTime = new JLabel();
    642             lM01RepeatTime.setBounds(new Rectangle(300, 270, 100, 20));
    643             lM01RepeatTime.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    644             lM01RepeatTime.setText(Messages.getString("SmpDialogAction.127")); //$NON-NLS-1$
    645 
    646             lM01Sector = new JLabel();
    647             lM01Sector.setBounds(new Rectangle(10, 295, 180, 20));
    648             lM01Sector.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    649             lM01Sector.setText(Messages.getString("SmpDialogAction.129")); //$NON-NLS-1$
    650 
    651             lM01Colour = new JLabel();
    652             lM01Colour.setBounds(new Rectangle(120, 295, 180, 20));
    653             lM01Colour.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    654             lM01Colour.setText(Messages.getString("SmpDialogAction.131")); //$NON-NLS-1$
    655 
    656             lM01Bearing = new JLabel();
    657             lM01Bearing.setBounds(new Rectangle(228, 295, 180, 20));
    658             lM01Bearing.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    659             lM01Bearing.setText(Messages.getString("SmpDialogAction.133")); //$NON-NLS-1$
    660 
    661             rbM01RegionA = new JRadioButton(
    662                     Messages.getString("SmpDialogAction.134"), Main.pref.get("tomsplugin.IALA") //$NON-NLS-1$ //$NON-NLS-2$
    663                             .equals("A")); //$NON-NLS-1$
    664             rbM01RegionA.setBounds(new Rectangle(305, 0, 50, 30));
    665             rbM01RegionB = new JRadioButton("-B", Main.pref.get("tomsplugin.IALA") //$NON-NLS-1$ //$NON-NLS-2$
    666                     .equals("B")); //$NON-NLS-1$
    667             rbM01RegionB.setBounds(new Rectangle(352, 0, 50, 30));
    668             bgM01Region = new ButtonGroup();
    669             bgM01Region.add(rbM01RegionA);
    670             bgM01Region.add(rbM01RegionB);
    671 
    672             ActionListener alM01Region = new ActionListener() {
    673                 public void actionPerformed(java.awt.event.ActionEvent e) {
    674                     if (buoy instanceof BuoyLat) {
    675                         buoy.setRegion(rbM01RegionB.isSelected());
    676                         buoy.setLightColour();
    677                         buoy.paintSign();
    678                     }
    679                 }
    680             };
    681             rbM01RegionA.addActionListener(alM01Region);
    682             rbM01RegionB.addActionListener(alM01Region);
    683 
    684             rbM01Fired1 = new JRadioButton(
    685                     Messages.getString("SmpDialogAction.140"), true); //$NON-NLS-1$
    686             rbM01Fired1.setBounds(new Rectangle(85, 240, 70, 30));
    687             rbM01FiredN = new JRadioButton(
    688                     Messages.getString("SmpDialogAction.141"), false); //$NON-NLS-1$
    689             rbM01FiredN.setBounds(new Rectangle(155, 240, 80, 30));
    690             bgM01Fired = new ButtonGroup();
    691             bgM01Fired.add(rbM01Fired1);
    692             bgM01Fired.add(rbM01FiredN);
    693 
    694             ActionListener alM01Fired = new ActionListener() {
    695                 public void actionPerformed(java.awt.event.ActionEvent e) {
    696                     buoy.setSectored(rbM01FiredN.isSelected());
    697                     cbM01Sector.setSelectedIndex(0);
    698                     buoy.setSectorIndex(0);
    699                     buoy.paintSign();
    700                 }
    701             };
    702             rbM01Fired1.addActionListener(alM01Fired);
    703             rbM01FiredN.addActionListener(alM01Fired);
    704 
    705             pM01SeaMap = new JPanel();
    706             pM01SeaMap.setLayout(null);
    707             pM01SeaMap.add(lM01Head, null);
    708             pM01SeaMap.add(rbM01RegionA, null);
    709             pM01SeaMap.add(rbM01RegionB, null);
    710             pM01SeaMap.add(lM01Region, null);
    711             pM01SeaMap.add(lM02Region, null);
    712             pM01SeaMap.add(lM01Icon, null);
    713             pM01SeaMap.add(lM02Icon, null);
    714             pM01SeaMap.add(lM03Icon, null);
    715             pM01SeaMap.add(lM04Icon, null);
    716             pM01SeaMap.add(lM05Icon, null);
    717             pM01SeaMap.add(lM06Icon, null);
    718             pM01SeaMap.add(getCbM01TypeOfMark(), null);
    719             pM01SeaMap.add(lM01TypeOfMark, null);
    720             pM01SeaMap.add(getCbM01CatOfMark(), null);
    721             pM01SeaMap.add(lM01CatOfMark, null);
    722             pM01SeaMap.add(getCbM01StyleOfMark(), null);
    723             pM01SeaMap.add(lM01StyleOfMark, null);
    724             pM01SeaMap.add(lM01Name, null);
    725             pM01SeaMap.add(getTfM01Name(), null);
    726             pM01SeaMap.add(lM01Props02, null);
    727             pM01SeaMap.add(getCM01TopMark(), null);
    728             pM01SeaMap.add(getCbM01TopMark(), null);
    729             pM01SeaMap.add(getCM01Radar(), null);
    730             pM01SeaMap.add(getCM01Racon(), null);
    731             pM01SeaMap.add(getCbM01Racon(), null);
    732             pM01SeaMap.add(getTfM01Racon(), null);
    733             pM01SeaMap.add(lM01Racon, null);
    734             pM01SeaMap.add(getCM01Fog(), null);
    735             pM01SeaMap.add(getCbM01Fog(), null);
    736             pM01SeaMap.add(getTfM01FogGroup(), null);
    737             pM01SeaMap.add(lM01FogGroup, null);
    738             pM01SeaMap.add(getTfM01FogPeriod(), null);
    739             pM01SeaMap.add(lM01FogPeriod, null);
    740             pM01SeaMap.add(getCM01Fired(), null);
    741             pM01SeaMap.add(rbM01Fired1, null);
    742             pM01SeaMap.add(rbM01FiredN, null);
    743             pM01SeaMap.add(getTfM01RepeatTime(), null);
    744             pM01SeaMap.add(lM01RepeatTime, null);
    745             pM01SeaMap.add(getCbM01Kennung(), null);
    746             pM01SeaMap.add(lM01Kennung, null);
    747             pM01SeaMap.add(lM01Group, null);
    748             pM01SeaMap.add(getTfM01Group(), null);
    749             pM01SeaMap.add(lM01Sector, null);
    750             pM01SeaMap.add(getCbM01Sector(), null);
    751             pM01SeaMap.add(lM01Colour, null);
    752             pM01SeaMap.add(getCbM01Colour(), null);
    753             pM01SeaMap.add(lM01Bearing, null);
    754             pM01SeaMap.add(getTfM01Bearing(), null);
    755             pM01SeaMap.add(getTfM02Bearing(), null);
    756             pM01SeaMap.add(getTfM01Radius(), null);
    757             pM01SeaMap.add(lM01Height, null);
    758             pM01SeaMap.add(getTfM01Height(), null);
    759             pM01SeaMap.add(lM01Range, null);
    760             pM01SeaMap.add(getTfM01Range(), null);
    761             pM01SeaMap.add(lM01FireMark, null);
    762             pM01SeaMap.add(lM01NameMark, null);
    763             pM01SeaMap.add(lM01FogMark, null);
    764             pM01SeaMap.add(lM01RadarMark, null);
    765             pM01SeaMap.add(getBM01Save(), null);
    766             pM01SeaMap.add(getSM01StatusBar(), null);
    767             pM01SeaMap.add(getBM01Close(), null);
    768             pM01SeaMap.add(getCM01IconVisible(), null);
    769         }
    770         return pM01SeaMap;
    771     }
    772 
    773     private JComboBox getCbM01TypeOfMark() {
    774 
    775         if (cbM01TypeOfMark == null) {
    776 
    777             cbM01TypeOfMark = new JComboBox();
    778 
    779             // Inhalt der ComboBox
    780             cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.142")); //$NON-NLS-1$
    781             cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.143")); //$NON-NLS-1$
    782             cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.144")); //$NON-NLS-1$
    783             cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.145")); //$NON-NLS-1$
    784             cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.146")); //$NON-NLS-1$
    785             cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.147")); //$NON-NLS-1$
    786             cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.148")); //$NON-NLS-1$
    787 
    788             cbM01TypeOfMark.setBounds(new Rectangle(45, 25, 165, 25));
    789             // cbM01TypeOfMark.setEditable(false);
    790             cbM01TypeOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    791             cbM01TypeOfMark.setEnabled(true);
    792 
    793             cbM01TypeOfMark.addActionListener(new ActionListener() {
    794                 public void actionPerformed(java.awt.event.ActionEvent e) {
    795                     int type = cbM01TypeOfMark.getSelectedIndex();
     480        private JDialog getDM01SeaMap() {
     481
     482                if (dM01SeaMap == null) {
     483                        dM01SeaMap = new JDialog();
     484                        dM01SeaMap.setSize(new Dimension(400, 400));
     485                        dM01SeaMap.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
     486                        dM01SeaMap.setModal(false);
     487                        dM01SeaMap.setResizable(false);
     488                        dM01SeaMap.setContentPane(getPM01SeaMap());
     489                        dM01SeaMap.setTitle(Messages.getString("SmpDialogAction.9")); //$NON-NLS-1$
     490                        dM01SeaMap.setVisible(false);
     491                        dM01SeaMap.setAlwaysOnTop(true);
     492                        dM01SeaMap.addWindowListener(new java.awt.event.WindowAdapter() {
     493                                public void windowClosing(java.awt.event.WindowEvent e) {
     494
     495                                        // Pictogramme wiederherstellen und aufraeumen
     496                                        if (obuoy != null)
     497                                                PicRebuild();
     498                                        // Deaktivierung des Listeners
     499                                        DataSet.removeSelectionListener(SmpListener);
     500                                        Selection = null;
     501
     502                                        SmpItem.setEnabled(true);
     503                                }
     504
     505                                public void windowActivated(WindowEvent arg0) {
     506                                        parseSeaMark();
     507                                        buoy.paintSign();
     508                                }
     509                        });
     510                }
     511                return dM01SeaMap;
     512        }
     513
     514        private JPanel getPM01SeaMap() {
     515                if (pM01SeaMap == null) {
     516
     517                        lM01Icon = new JLabel();
     518                        lM01Icon.setBounds(new Rectangle(220, 20, 150, 200));
     519                        lM01Icon.setIcon(null);
     520                        lM01Icon.setText(""); //$NON-NLS-1$
     521
     522                        lM02Icon = new JLabel();
     523                        lM02Icon.setBounds(new Rectangle(220, 20, 150, 200));
     524                        lM02Icon.setIcon(null);
     525                        lM02Icon.setText(""); //$NON-NLS-1$
     526
     527                        lM03Icon = new JLabel();
     528                        lM03Icon.setBounds(new Rectangle(220, 20, 150, 200));
     529                        lM03Icon.setIcon(null);
     530                        lM03Icon.setText(""); //$NON-NLS-1$
     531
     532                        lM04Icon = new JLabel();
     533                        lM04Icon.setBounds(new Rectangle(220, 20, 150, 200));
     534                        lM04Icon.setIcon(null);
     535                        lM04Icon.setText(""); //$NON-NLS-1$
     536
     537                        lM05Icon = new JLabel();
     538                        lM05Icon.setBounds(new Rectangle(220, 20, 150, 200));
     539                        lM05Icon.setIcon(null);
     540                        lM05Icon.setText(""); //$NON-NLS-1$
     541
     542                        lM06Icon = new JLabel();
     543                        lM06Icon.setBounds(new Rectangle(220, 20, 150, 200));
     544                        lM06Icon.setIcon(null);
     545                        lM06Icon.setText(""); //$NON-NLS-1$
     546
     547                        lM01FireMark = new JLabel();
     548                        lM01FireMark.setBounds(new Rectangle(315, 85, 80, 20));
     549                        lM01FireMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
     550                        lM01FireMark.setText(""); //$NON-NLS-1$
     551
     552                        lM01NameMark = new JLabel();
     553                        lM01NameMark.setBounds(new Rectangle(315, 65, 80, 20));
     554                        lM01NameMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
     555                        lM01NameMark.setText(""); //$NON-NLS-1$
     556
     557                        lM01FogMark = new JLabel();
     558                        lM01FogMark.setBounds(new Rectangle(220, 85, 70, 20));
     559                        lM01FogMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
     560                        lM01FogMark.setText(""); //$NON-NLS-1$
     561
     562                        lM01RadarMark = new JLabel();
     563                        lM01RadarMark.setBounds(new Rectangle(230, 65, 70, 20));
     564                        lM01RadarMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
     565                        lM01RadarMark.setText(""); //$NON-NLS-1$
     566
     567                        lM01Head = new JLabel();
     568                        lM01Head.setBounds(new Rectangle(5, 3, 316, 16));
     569                        lM01Head.setText(Messages.getString("SmpDialogAction.97")); //$NON-NLS-1$
     570
     571                        lM01Region = new JLabel();
     572                        lM01Region.setBounds(new Rectangle(220, 7, 120, 16));
     573                        lM01Region.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     574                        lM01Region.setText(Messages.getString("SmpDialogAction.99")); //$NON-NLS-1$
     575
     576                        lM02Region = new JLabel();
     577                        lM02Region.setBounds(new Rectangle(270, 7, 120, 16));
     578                        lM02Region.setFont(new Font("Dialog", Font.BOLD, 12)); //$NON-NLS-1$
     579                        lM02Region.setText(Messages.getString("SmpDialogAction.101")); //$NON-NLS-1$
     580
     581                        lM01TypeOfMark = new JLabel();
     582                        lM01TypeOfMark.setBounds(new Rectangle(5, 28, 120, 16));
     583                        lM01TypeOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     584                        lM01TypeOfMark.setText(Messages.getString("SmpDialogAction.103")); //$NON-NLS-1$
     585
     586                        lM01CatOfMark = new JLabel();
     587                        lM01CatOfMark.setBounds(new Rectangle(5, 58, 120, 16));
     588                        lM01CatOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     589                        lM01CatOfMark.setText(Messages.getString("SmpDialogAction.1")); //$NON-NLS-1$
     590
     591                        lM01StyleOfMark = new JLabel();
     592                        lM01StyleOfMark.setBounds(new Rectangle(5, 88, 148, 16));
     593                        lM01StyleOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     594                        lM01StyleOfMark.setText(Messages.getString("SmpDialogAction.107")); //$NON-NLS-1$
     595
     596                        lM01Name = new JLabel();
     597                        lM01Name.setBounds(new Rectangle(5, 120, 82, 16));
     598                        lM01Name.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     599                        lM01Name.setText(Messages.getString("SmpDialogAction.109")); //$NON-NLS-1$
     600
     601                        lM01Props02 = new JLabel();
     602                        lM01Props02.setBounds(new Rectangle(5, 150, 172, 16));
     603                        lM01Props02.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     604                        lM01Props02.setText(Messages.getString("SmpDialogAction.111")); //$NON-NLS-1$
     605
     606                        lM01Racon = new JLabel();
     607                        lM01Racon.setBounds(new Rectangle(335, 195, 65, 20));
     608                        lM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     609                        lM01Racon.setText(Messages.getString("SmpDialogAction.113")); //$NON-NLS-1$
     610
     611                        lM01FogGroup = new JLabel();
     612                        lM01FogGroup.setBounds(new Rectangle(190, 220, 100, 20));
     613                        lM01FogGroup.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     614                        lM01FogGroup.setText(Messages.getString("SmpDialogAction.115")); //$NON-NLS-1$
     615
     616                        lM01FogPeriod = new JLabel();
     617                        lM01FogPeriod.setBounds(new Rectangle(300, 220, 100, 20));
     618                        lM01FogPeriod.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     619                        lM01FogPeriod.setText(Messages.getString("SmpDialogAction.117")); //$NON-NLS-1$
     620
     621                        lM01Kennung = new JLabel();
     622                        lM01Kennung.setBounds(new Rectangle(240, 245, 60, 20));
     623                        lM01Kennung.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     624                        lM01Kennung.setText(Messages.getString("SmpDialogAction.119")); //$NON-NLS-1$
     625
     626                        lM01Height = new JLabel();
     627                        lM01Height.setBounds(new Rectangle(10, 270, 100, 20));
     628                        lM01Height.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     629                        lM01Height.setText(Messages.getString("SmpDialogAction.121")); //$NON-NLS-1$
     630
     631                        lM01Range = new JLabel();
     632                        lM01Range.setBounds(new Rectangle(108, 270, 100, 20));
     633                        lM01Range.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     634                        lM01Range.setText(Messages.getString("SmpDialogAction.123")); //$NON-NLS-1$
     635
     636                        lM01Group = new JLabel();
     637                        lM01Group.setBounds(new Rectangle(204, 270, 100, 20));
     638                        lM01Group.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     639                        lM01Group.setText(Messages.getString("SmpDialogAction.125")); //$NON-NLS-1$
     640
     641                        lM01RepeatTime = new JLabel();
     642                        lM01RepeatTime.setBounds(new Rectangle(300, 270, 100, 20));
     643                        lM01RepeatTime.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     644                        lM01RepeatTime.setText(Messages.getString("SmpDialogAction.127")); //$NON-NLS-1$
     645
     646                        lM01Sector = new JLabel();
     647                        lM01Sector.setBounds(new Rectangle(10, 295, 180, 20));
     648                        lM01Sector.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     649                        lM01Sector.setText(Messages.getString("SmpDialogAction.129")); //$NON-NLS-1$
     650
     651                        lM01Colour = new JLabel();
     652                        lM01Colour.setBounds(new Rectangle(120, 295, 180, 20));
     653                        lM01Colour.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     654                        lM01Colour.setText(Messages.getString("SmpDialogAction.131")); //$NON-NLS-1$
     655
     656                        lM01Bearing = new JLabel();
     657                        lM01Bearing.setBounds(new Rectangle(228, 295, 180, 20));
     658                        lM01Bearing.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     659                        lM01Bearing.setText(Messages.getString("SmpDialogAction.133")); //$NON-NLS-1$
     660
     661                        rbM01RegionA = new JRadioButton(
     662                                        Messages.getString("SmpDialogAction.134"), Main.pref.get("tomsplugin.IALA") //$NON-NLS-1$ //$NON-NLS-2$
     663                                                        .equals("A")); //$NON-NLS-1$
     664                        rbM01RegionA.setBounds(new Rectangle(305, 0, 50, 30));
     665                        rbM01RegionB = new JRadioButton("-B", Main.pref.get("tomsplugin.IALA") //$NON-NLS-1$ //$NON-NLS-2$
     666                                        .equals("B")); //$NON-NLS-1$
     667                        rbM01RegionB.setBounds(new Rectangle(352, 0, 50, 30));
     668                        bgM01Region = new ButtonGroup();
     669                        bgM01Region.add(rbM01RegionA);
     670                        bgM01Region.add(rbM01RegionB);
     671
     672                        ActionListener alM01Region = new ActionListener() {
     673                                public void actionPerformed(java.awt.event.ActionEvent e) {
     674                                        if (buoy instanceof BuoyLat) {
     675                                                buoy.setRegion(rbM01RegionB.isSelected());
     676                                                buoy.setLightColour();
     677                                                buoy.paintSign();
     678                                        }
     679                                }
     680                        };
     681                        rbM01RegionA.addActionListener(alM01Region);
     682                        rbM01RegionB.addActionListener(alM01Region);
     683
     684                        rbM01Fired1 = new JRadioButton(
     685                                        Messages.getString("SmpDialogAction.140"), true); //$NON-NLS-1$
     686                        rbM01Fired1.setBounds(new Rectangle(85, 240, 70, 30));
     687                        rbM01FiredN = new JRadioButton(
     688                                        Messages.getString("SmpDialogAction.141"), false); //$NON-NLS-1$
     689                        rbM01FiredN.setBounds(new Rectangle(155, 240, 80, 30));
     690                        bgM01Fired = new ButtonGroup();
     691                        bgM01Fired.add(rbM01Fired1);
     692                        bgM01Fired.add(rbM01FiredN);
     693
     694                        ActionListener alM01Fired = new ActionListener() {
     695                                public void actionPerformed(java.awt.event.ActionEvent e) {
     696                                        buoy.setSectored(rbM01FiredN.isSelected());
     697                                        cbM01Sector.setSelectedIndex(0);
     698                                        buoy.setSectorIndex(0);
     699                                        buoy.paintSign();
     700                                }
     701                        };
     702                        rbM01Fired1.addActionListener(alM01Fired);
     703                        rbM01FiredN.addActionListener(alM01Fired);
     704
     705                        pM01SeaMap = new JPanel();
     706                        pM01SeaMap.setLayout(null);
     707                        pM01SeaMap.add(lM01Head, null);
     708                        pM01SeaMap.add(rbM01RegionA, null);
     709                        pM01SeaMap.add(rbM01RegionB, null);
     710                        pM01SeaMap.add(lM01Region, null);
     711                        pM01SeaMap.add(lM02Region, null);
     712                        pM01SeaMap.add(lM01Icon, null);
     713                        pM01SeaMap.add(lM02Icon, null);
     714                        pM01SeaMap.add(lM03Icon, null);
     715                        pM01SeaMap.add(lM04Icon, null);
     716                        pM01SeaMap.add(lM05Icon, null);
     717                        pM01SeaMap.add(lM06Icon, null);
     718                        pM01SeaMap.add(getCbM01TypeOfMark(), null);
     719                        pM01SeaMap.add(lM01TypeOfMark, null);
     720                        pM01SeaMap.add(getCbM01CatOfMark(), null);
     721                        pM01SeaMap.add(lM01CatOfMark, null);
     722                        pM01SeaMap.add(getCbM01StyleOfMark(), null);
     723                        pM01SeaMap.add(lM01StyleOfMark, null);
     724                        pM01SeaMap.add(lM01Name, null);
     725                        pM01SeaMap.add(getTfM01Name(), null);
     726                        pM01SeaMap.add(lM01Props02, null);
     727                        pM01SeaMap.add(getCM01TopMark(), null);
     728                        pM01SeaMap.add(getCbM01TopMark(), null);
     729                        pM01SeaMap.add(getCM01Radar(), null);
     730                        pM01SeaMap.add(getCM01Racon(), null);
     731                        pM01SeaMap.add(getCbM01Racon(), null);
     732                        pM01SeaMap.add(getTfM01Racon(), null);
     733                        pM01SeaMap.add(lM01Racon, null);
     734                        pM01SeaMap.add(getCM01Fog(), null);
     735                        pM01SeaMap.add(getCbM01Fog(), null);
     736                        pM01SeaMap.add(getTfM01FogGroup(), null);
     737                        pM01SeaMap.add(lM01FogGroup, null);
     738                        pM01SeaMap.add(getTfM01FogPeriod(), null);
     739                        pM01SeaMap.add(lM01FogPeriod, null);
     740                        pM01SeaMap.add(getCM01Fired(), null);
     741                        pM01SeaMap.add(rbM01Fired1, null);
     742                        pM01SeaMap.add(rbM01FiredN, null);
     743                        pM01SeaMap.add(getTfM01RepeatTime(), null);
     744                        pM01SeaMap.add(lM01RepeatTime, null);
     745                        pM01SeaMap.add(getCbM01Kennung(), null);
     746                        pM01SeaMap.add(lM01Kennung, null);
     747                        pM01SeaMap.add(lM01Group, null);
     748                        pM01SeaMap.add(getTfM01Group(), null);
     749                        pM01SeaMap.add(lM01Sector, null);
     750                        pM01SeaMap.add(getCbM01Sector(), null);
     751                        pM01SeaMap.add(lM01Colour, null);
     752                        pM01SeaMap.add(getCbM01Colour(), null);
     753                        pM01SeaMap.add(lM01Bearing, null);
     754                        pM01SeaMap.add(getTfM01Bearing(), null);
     755                        pM01SeaMap.add(getTfM02Bearing(), null);
     756                        pM01SeaMap.add(getTfM01Radius(), null);
     757                        pM01SeaMap.add(lM01Height, null);
     758                        pM01SeaMap.add(getTfM01Height(), null);
     759                        pM01SeaMap.add(lM01Range, null);
     760                        pM01SeaMap.add(getTfM01Range(), null);
     761                        pM01SeaMap.add(lM01FireMark, null);
     762                        pM01SeaMap.add(lM01NameMark, null);
     763                        pM01SeaMap.add(lM01FogMark, null);
     764                        pM01SeaMap.add(lM01RadarMark, null);
     765                        pM01SeaMap.add(getBM01Save(), null);
     766                        pM01SeaMap.add(getSM01StatusBar(), null);
     767                        pM01SeaMap.add(getBM01Close(), null);
     768                        pM01SeaMap.add(getCM01IconVisible(), null);
     769                }
     770                return pM01SeaMap;
     771        }
     772
     773        private JComboBox getCbM01TypeOfMark() {
     774
     775                if (cbM01TypeOfMark == null) {
     776
     777                        cbM01TypeOfMark = new JComboBox();
     778
     779                        // Inhalt der ComboBox
     780                        cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.142")); //$NON-NLS-1$
     781                        cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.143")); //$NON-NLS-1$
     782                        cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.144")); //$NON-NLS-1$
     783                        cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.145")); //$NON-NLS-1$
     784                        cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.146")); //$NON-NLS-1$
     785                        cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.147")); //$NON-NLS-1$
     786                        cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.148")); //$NON-NLS-1$
     787
     788                        cbM01TypeOfMark.setBounds(new Rectangle(45, 25, 165, 25));
     789                        // cbM01TypeOfMark.setEditable(false);
     790                        cbM01TypeOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     791                        cbM01TypeOfMark.setEnabled(true);
     792
     793                        cbM01TypeOfMark.addActionListener(new ActionListener() {
     794                                public void actionPerformed(java.awt.event.ActionEvent e) {
     795                                        int type = cbM01TypeOfMark.getSelectedIndex();
    796796
    797797                                        if (buoy == null) {
     
    801801                                        }
    802802
    803                     Node n = buoy.getNode();
    804                     if (n == null)
    805                         return;
    806 
    807                     paintlock = true;
    808                     switch (type) {
     803                                        Node n = buoy.getNode();
     804                                        if (n == null)
     805                                                return;
     806
     807                                        paintlock = true;
     808                                        switch (type) {
    809809
    810810                                        case SeaMark.UNKNOWN_TYPE:
     
    814814                                                break;
    815815
    816                     case SeaMark.LATERAL:
    817                         if (!(buoy instanceof BuoyLat)) {
    818                             buoy = new BuoyLat(dia, n);
    819                             buoy.setBuoyIndex(0);
    820                         }
    821                         break;
    822 
    823                     case SeaMark.CARDINAL:
    824                         if (!(buoy instanceof BuoyCard)) {
    825                             buoy = new BuoyCard(dia, n);
    826                             buoy.setBuoyIndex(0);
    827                         }
    828                         break;
    829 
    830                     case SeaMark.SAFE_WATER:
    831                         if (!(buoy instanceof BuoySaw)) {
    832                             buoy = new BuoySaw(dia, n);
    833                         }
    834                         buoy.setBuoyIndex(type);
    835                         break;
    836 
    837                     case SeaMark.ISOLATED_DANGER:
    838                         if (!(buoy instanceof BuoyIsol)) {
    839                             buoy = new BuoyIsol(dia, n);
    840                         }
    841                         buoy.setBuoyIndex(type);
    842                         break;
    843 
    844                     case SeaMark.SPECIAL_PURPOSE:
    845                         if (!(buoy instanceof BuoySpec)) {
    846                             buoy = new BuoySpec(dia, n);
    847                         }
    848                         buoy.setBuoyIndex(type);
    849                         break;
    850 
    851                     case SeaMark.LIGHT:
    852                         if (!(buoy instanceof BuoyNota)) {
    853                             buoy = new BuoyNota(dia, n);
    854                             buoy.setBuoyIndex(0);
    855                         }
    856                         break;
    857                     }
    858 
    859                     buoy.refreshStyles();
    860                     buoy.refreshLights();
    861                     buoy.setLightColour();
    862                     paintlock = false;
    863                     buoy.paintSign();
    864                 }
    865             });
    866         }
    867         return cbM01TypeOfMark;
    868     }
    869 
    870     private JComboBox getCbM01CatOfMark() {
    871         if (cbM01CatOfMark == null) {
    872             cbM01CatOfMark = new JComboBox();
    873             cbM01CatOfMark.setBounds(new Rectangle(60, 55, 150, 25));
    874             cbM01CatOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    875             cbM01CatOfMark.setEnabled(true);
    876 
    877             cbM01CatOfMark.addActionListener(new ActionListener() {
    878                 public void actionPerformed(ActionEvent e) {
    879                     int cat = cbM01CatOfMark.getSelectedIndex();
     816                                        case SeaMark.LATERAL:
     817                                                if (!(buoy instanceof BuoyLat)) {
     818                                                        buoy = new BuoyLat(dia, n);
     819                                                        buoy.setBuoyIndex(0);
     820                                                }
     821                                                break;
     822
     823                                        case SeaMark.CARDINAL:
     824                                                if (!(buoy instanceof BuoyCard)) {
     825                                                        buoy = new BuoyCard(dia, n);
     826                                                        buoy.setBuoyIndex(0);
     827                                                }
     828                                                break;
     829
     830                                        case SeaMark.SAFE_WATER:
     831                                                if (!(buoy instanceof BuoySaw)) {
     832                                                        buoy = new BuoySaw(dia, n);
     833                                                }
     834                                                buoy.setBuoyIndex(type);
     835                                                break;
     836
     837                                        case SeaMark.ISOLATED_DANGER:
     838                                                if (!(buoy instanceof BuoyIsol)) {
     839                                                        buoy = new BuoyIsol(dia, n);
     840                                                }
     841                                                buoy.setBuoyIndex(type);
     842                                                break;
     843
     844                                        case SeaMark.SPECIAL_PURPOSE:
     845                                                if (!(buoy instanceof BuoySpec)) {
     846                                                        buoy = new BuoySpec(dia, n);
     847                                                }
     848                                                buoy.setBuoyIndex(type);
     849                                                break;
     850
     851                                        case SeaMark.LIGHT:
     852                                                if (!(buoy instanceof BuoyNota)) {
     853                                                        buoy = new BuoyNota(dia, n);
     854                                                        buoy.setBuoyIndex(0);
     855                                                }
     856                                                break;
     857                                        }
     858
     859                                        buoy.refreshStyles();
     860                                        buoy.refreshLights();
     861                                        buoy.setLightColour();
     862                                        paintlock = false;
     863                                        buoy.paintSign();
     864                                }
     865                        });
     866                }
     867                return cbM01TypeOfMark;
     868        }
     869
     870        private JComboBox getCbM01CatOfMark() {
     871                if (cbM01CatOfMark == null) {
     872                        cbM01CatOfMark = new JComboBox();
     873                        cbM01CatOfMark.setBounds(new Rectangle(60, 55, 150, 25));
     874                        cbM01CatOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     875                        cbM01CatOfMark.setEnabled(true);
     876
     877                        cbM01CatOfMark.addActionListener(new ActionListener() {
     878                                public void actionPerformed(ActionEvent e) {
     879                                        int cat = cbM01CatOfMark.getSelectedIndex();
    880880
    881881                                        if (buoy == null) {
     
    885885                                        }
    886886
    887                     Node n = buoy.getNode();
    888                     if (n == null)
    889                         return;
     887                                        Node n = buoy.getNode();
     888                                        if (n == null)
     889                                                return;
    890890
    891891                                        buoy.setBuoyIndex(cat);
    892                     buoy.refreshStyles();
    893                     buoy.refreshLights();
    894                     buoy.setLightColour();
    895                     buoy.paintSign();
    896                 }
    897             });
    898         }
    899         return cbM01CatOfMark;
    900     }
     892                                        buoy.refreshStyles();
     893                                        buoy.refreshLights();
     894                                        buoy.setLightColour();
     895                                        buoy.paintSign();
     896                                }
     897                        });
     898                }
     899                return cbM01CatOfMark;
     900        }
    901901
    902902        private JComboBox getCbM01StyleOfMark() {
     
    920920        }
    921921
    922     private JTextField getTfM01Name() {
    923         if (tfM01Name == null) {
    924             tfM01Name = new JTextField();
    925             tfM01Name.setBounds(new Rectangle(50, 120, 150, 20));
    926             tfM01Name.addFocusListener(new FocusAdapter() {
    927                 public void focusLost(FocusEvent e) {
    928                     buoy.setName(tfM01Name.getText());
    929                     buoy.paintSign();
    930                 }
    931             });
    932         }
    933         return tfM01Name;
    934     }
    935 
    936     private JCheckBox getCM01TopMark() {
    937         if (cM01TopMark == null) {
    938             cM01TopMark = new JCheckBox();
    939             cM01TopMark.setBounds(new Rectangle(10, 170, 100, 20));
    940             cM01TopMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    941             cM01TopMark.setText(Messages.getString("SmpDialogAction.166")); //$NON-NLS-1$
    942             cM01TopMark.addItemListener(new ItemListener() {
    943                 public void itemStateChanged(ItemEvent e) {
    944                     if (buoy == null) {
    945                         return;
    946                     }
    947                     buoy.setTopMark(cM01TopMark.isSelected());
    948                     buoy.paintSign();
    949                 }
    950             });
    951         }
    952         return cM01TopMark;
    953     }
    954 
    955     private JComboBox getCbM01TopMark() {
    956         if (cbM01TopMark == null) {
    957             cbM01TopMark = new JComboBox();
    958             cbM01TopMark.setBounds(new Rectangle(110, 170, 80, 20));
    959             cbM01TopMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    960             cbM01TopMark.addActionListener(new ActionListener() {
    961                 public void actionPerformed(ActionEvent e) {
    962                     int top = cbM01TopMark.getSelectedIndex();
    963                     buoy.paintSign();
    964                 }
    965             });
    966         }
    967         return cbM01TopMark;
    968     }
    969 
    970     private JCheckBox getCM01Radar() {
    971         if (cM01Radar == null) {
    972             cM01Radar = new JCheckBox();
    973             cM01Radar.setBounds(new Rectangle(10, 195, 120, 20));
    974             cM01Radar.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    975             cM01Radar.setText(Messages.getString("SmpDialogAction.169")); //$NON-NLS-1$
    976             cM01Radar.addActionListener(new ActionListener() {
    977                 public void actionPerformed(ActionEvent e) {
    978                     if (cM01Radar.isSelected()) {
    979                         buoy.setRadar(true);
    980                         buoy.setRacon(false);
    981                         cM01Racon.setSelected(false);
    982                     } else {
    983                         buoy.setRadar(false);
    984                     }
    985                     buoy.paintSign();
    986                 }
    987             });
    988         }
    989         return cM01Radar;
    990     }
    991 
    992     private JCheckBox getCM01Racon() {
    993         if (cM01Racon == null) {
    994             cM01Racon = new JCheckBox();
    995             cM01Racon.setBounds(new Rectangle(130, 195, 110, 20));
    996             cM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    997             cM01Racon.setText(Messages.getString("SmpDialogAction.171")); //$NON-NLS-1$
    998             cM01Racon.addActionListener(new ActionListener() {
    999                 public void actionPerformed(ActionEvent e) {
    1000                     if (cM01Racon.isSelected()) {
    1001                         buoy.setRacon(true);
    1002                         buoy.setRadar(false);
    1003                         cM01Radar.setSelected(false);
    1004                     } else {
    1005                         buoy.setRacon(false);
    1006                     }
    1007                     buoy.paintSign();
    1008                 }
    1009             });
    1010         }
    1011         return cM01Racon;
    1012     }
    1013 
    1014     private JComboBox getCbM01Racon() {
    1015         if (cbM01Racon == null) {
    1016             cbM01Racon = new JComboBox();
    1017             cbM01Racon.setBounds(new Rectangle(240, 195, 80, 20));
    1018             cbM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    1019             cbM01Racon.removeAllItems();
    1020             cbM01Racon.addItem("Any");
    1021             cbM01Racon.addItem("Racon");
    1022             cbM01Racon.addItem("Ramark");
    1023             cbM01Racon.addItem("Leading");
    1024             cbM01Racon.addActionListener(new ActionListener() {
    1025                 public void actionPerformed(ActionEvent e) {
    1026                     int rac = cbM01Racon.getSelectedIndex();
    1027                     buoy.setRaType(rac);
    1028                     buoy.paintSign();
    1029                 }
    1030             });
    1031         }
    1032         return cbM01Racon;
    1033     }
    1034 
    1035     private JTextField getTfM01Racon() {
    1036         if (tfM01Racon == null) {
    1037             tfM01Racon = new JTextField();
    1038             tfM01Racon.setBounds(new Rectangle(345, 195, 30, 20));
    1039             tfM01Racon.addFocusListener(new FocusAdapter() {
    1040                 public void focusLost(FocusEvent e) {
    1041                     buoy.setRaconGroup(tfM01Racon.getText().trim());
    1042                     buoy.paintSign();
    1043                 }
    1044             });
    1045         }
    1046         return tfM01Racon;
    1047     }
    1048 
    1049     private JCheckBox getCM01Fog() {
    1050         if (cM01Fog == null) {
    1051             cM01Fog = new JCheckBox();
    1052             cM01Fog.setBounds(new Rectangle(10, 220, 90, 20));
    1053             cM01Fog.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    1054             cM01Fog.setText(Messages.getString("SmpDialogAction.174")); //$NON-NLS-1$
    1055             cM01Fog.addActionListener(new ActionListener() {
    1056                 public void actionPerformed(ActionEvent e) {
    1057                     buoy.setFog(cM01Fog.isSelected());
    1058                     buoy.paintSign();
    1059                 }
    1060             });
    1061         }
    1062         return cM01Fog;
    1063     }
    1064 
    1065     private JComboBox getCbM01Fog() {
    1066         if (cbM01Fog == null) {
    1067             cbM01Fog = new JComboBox();
    1068             cbM01Fog.setBounds(new Rectangle(100, 220, 70, 20));
    1069             cbM01Fog.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    1070             cbM01Fog.removeAllItems();
    1071             cbM01Fog.addItem("Any");
    1072             cbM01Fog.addItem("Horn");
    1073             cbM01Fog.addItem("Siren");
    1074             cbM01Fog.addItem("Dia");
    1075             cbM01Fog.addItem("Bell");
    1076             cbM01Fog.addItem("Whis");
    1077             cbM01Fog.addItem("Gong");
    1078             cbM01Fog.addItem("Explos");
    1079             cbM01Fog.addActionListener(new ActionListener() {
    1080                 public void actionPerformed(ActionEvent e) {
    1081                     if (cbM01Fog.getSelectedIndex() > 0)
    1082                         buoy.setFogSound(cbM01Fog.getSelectedIndex());
    1083                     else
    1084                         buoy.setFogSound(0);
    1085                     buoy.paintSign();
    1086                 }
    1087             });
    1088         }
    1089         return cbM01Fog;
    1090     }
    1091 
    1092     private JTextField getTfM01FogGroup() {
    1093         if (tfM01FogGroup == null) {
    1094             tfM01FogGroup = new JTextField();
    1095             tfM01FogGroup.setBounds(new Rectangle(243, 220, 30, 20));
    1096             tfM01FogGroup.addFocusListener(new FocusAdapter() {
    1097                 public void focusLost(FocusEvent e) {
    1098                     buoy.setFogGroup(tfM01FogGroup.getText().trim());
    1099                     buoy.paintSign();
    1100                 }
    1101             });
    1102         }
    1103         return tfM01FogGroup;
    1104     }
    1105 
    1106     private JTextField getTfM01FogPeriod() {
    1107         if (tfM01FogPeriod == null) {
    1108             tfM01FogPeriod = new JTextField();
    1109             tfM01FogPeriod.setBounds(new Rectangle(345, 220, 30, 20));
    1110             tfM01FogPeriod.addFocusListener(new FocusAdapter() {
    1111                 public void focusLost(FocusEvent e) {
    1112                     buoy.setFogPeriod(tfM01FogPeriod.getText().trim());
    1113                     buoy.paintSign();
    1114                 }
    1115             });
    1116         }
    1117         return tfM01FogPeriod;
    1118     }
    1119 
    1120     private JCheckBox getCM01Fired() {
    1121         if (cM01Fired == null) {
    1122             cM01Fired = new JCheckBox();
    1123             cM01Fired.setBounds(new Rectangle(10, 245, 75, 20));
    1124             cM01Fired.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    1125             cM01Fired.setText(Messages.getString("SmpDialogAction.177")); //$NON-NLS-1$
    1126             cM01Fired.addItemListener(new ItemListener() {
    1127                 public void itemStateChanged(ItemEvent e) {
    1128                     if (buoy == null) {
    1129                         return;
    1130                     }
    1131                     buoy.setFired(cM01Fired.isSelected());
    1132                     buoy.setLightColour();
    1133                     buoy.paintSign();
    1134                 }
    1135             });
    1136         }
    1137 
    1138         return cM01Fired;
    1139     }
    1140 
    1141     private JComboBox getCbM01Kennung() {
    1142         if (cbM01Kennung == null) {
    1143             cbM01Kennung = new JComboBox();
    1144             cbM01Kennung.setBounds(new Rectangle(305, 245, 70, 20));
    1145             cbM01Kennung.addActionListener(new ActionListener() {
    1146                 public void actionPerformed(ActionEvent e) {
    1147                     int i1, i2;
    1148                     String c = ""; //$NON-NLS-1$ //$NON-NLS-2$
    1149                     String it = (String) cbM01Kennung.getSelectedItem();
    1150 
    1151                     if (it == null)
    1152                         return;
    1153                     if (it.equals(Messages.getString("SmpDialogAction.212"))) //$NON-NLS-1$
    1154                         return;
    1155                     if (buoy == null)
    1156                         return;
    1157 
    1158                     if (it.contains("(")) {
    1159                         i1 = it.indexOf("(");
    1160                         i2 = it.indexOf(")");
    1161                         c = it.substring(i1 + 1, i2);
    1162                         it = it.substring(0, i1) + it.substring(i2 + 1);
    1163                     }
    1164                     if (!c.isEmpty())
    1165                         buoy.setLightGroup(c);
    1166                     ;
    1167                     buoy.setLightChar(it);
    1168                     buoy.paintSign();
    1169                 }
    1170             });
    1171         }
    1172         return cbM01Kennung;
    1173     }
    1174 
    1175     private JTextField getTfM01Height() {
    1176         if (tfM01Height == null) {
    1177             tfM01Height = new JTextField();
    1178             tfM01Height.setBounds(new Rectangle(54, 270, 30, 20));
    1179             tfM01Height.addFocusListener(new FocusAdapter() {
    1180                 public void focusLost(FocusEvent e) {
    1181                     buoy.setHeight(tfM01Height.getText().trim());
    1182                     buoy.paintSign();
    1183                 }
    1184             });
    1185         }
    1186         return tfM01Height;
    1187     }
    1188 
    1189     private JTextField getTfM01Range() {
    1190         if (tfM01Range == null) {
    1191             tfM01Range = new JTextField();
    1192             tfM01Range.setBounds(new Rectangle(151, 270, 30, 20));
    1193             tfM01Range.addFocusListener(new FocusAdapter() {
    1194                 public void focusLost(FocusEvent e) {
    1195                     buoy.setRange(tfM01Range.getText().trim());
    1196                     buoy.paintSign();
    1197                 }
    1198             });
    1199         }
    1200         return tfM01Range;
    1201     }
    1202 
    1203     private JTextField getTfM01Group() {
    1204         if (tfM01Group == null) {
    1205             tfM01Group = new JTextField();
    1206             tfM01Group.setBounds(new Rectangle(255, 270, 30, 20));
    1207             tfM01Group.addFocusListener(new FocusAdapter() {
    1208                 public void focusLost(FocusEvent e) {
    1209                     buoy.setLightGroup(tfM01Group.getText().trim());
    1210                     buoy.paintSign();
    1211                 }
    1212             });
    1213         }
    1214         return tfM01Group;
    1215     }
    1216 
    1217     private JTextField getTfM01RepeatTime() {
    1218         if (tfM01RepeatTime == null) {
    1219             tfM01RepeatTime = new JTextField();
    1220             tfM01RepeatTime.setBounds(new Rectangle(345, 270, 30, 20));
    1221             tfM01RepeatTime.addActionListener(new ActionListener() {
    1222                 public void actionPerformed(ActionEvent e) {
    1223                     buoy.setLightPeriod(tfM01RepeatTime.getText().trim());
    1224                     buoy.paintSign();
    1225                 }
    1226             });
    1227 
    1228             tfM01RepeatTime.addFocusListener(new FocusAdapter() {
    1229                 public void focusLost(FocusEvent e) {
    1230                     buoy.setLightPeriod(tfM01RepeatTime.getText().trim());
    1231                     buoy.paintSign();
    1232                 }
    1233             });
    1234         }
    1235         return tfM01RepeatTime;
    1236     }
    1237 
    1238     private JComboBox getCbM01Colour() {
    1239         if (cbM01Colour == null) {
    1240             cbM01Colour = new JComboBox();
    1241             cbM01Colour.setBounds(new Rectangle(165, 295, 40, 20));
    1242             cbM01Colour.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    1243             cbM01Colour.addItem(""); //$NON-NLS-1$
    1244             cbM01Colour.addItem(Messages.getString("SmpDialogAction.190")); //$NON-NLS-1$
    1245             cbM01Colour.addItem(Messages.getString("SmpDialogAction.191")); //$NON-NLS-1$
    1246             cbM01Colour.addItem(Messages.getString("SmpDialogAction.192")); //$NON-NLS-1$
    1247             cbM01Colour.addActionListener(new ActionListener() {
    1248                 public void actionPerformed(ActionEvent e) {
    1249                     buoy.setLightColour((String) cbM01Colour.getSelectedItem());
    1250                     buoy.paintSign();
    1251                 }
    1252             });
    1253         }
    1254         return cbM01Colour;
    1255     }
    1256 
    1257     private JComboBox getCbM01Sector() {
    1258         if (cbM01Sector == null) {
    1259             cbM01Sector = new JComboBox();
    1260             cbM01Sector.setBounds(new Rectangle(55, 295, 50, 20));
    1261             cbM01Sector.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
    1262             cbM01Sector.addItem(Messages.getString("SmpDialogAction.194")); //$NON-NLS-1$
    1263             cbM01Sector.addItem(Messages.getString("SmpDialogAction.195")); //$NON-NLS-1$
    1264             cbM01Sector.addItem(Messages.getString("SmpDialogAction.196")); //$NON-NLS-1$
    1265             cbM01Sector.addItem(Messages.getString("SmpDialogAction.197")); //$NON-NLS-1$
    1266             cbM01Sector.addItem(Messages.getString("SmpDialogAction.198")); //$NON-NLS-1$
    1267             cbM01Sector.addItem(Messages.getString("SmpDialogAction.199")); //$NON-NLS-1$
    1268             cbM01Sector.addItem(Messages.getString("SmpDialogAction.200")); //$NON-NLS-1$
    1269             cbM01Sector.addItem(Messages.getString("SmpDialogAction.201")); //$NON-NLS-1$
    1270             cbM01Sector.addItem(Messages.getString("SmpDialogAction.202")); //$NON-NLS-1$
    1271             cbM01Sector.addItem(Messages.getString("SmpDialogAction.203")); //$NON-NLS-1$
    1272             cbM01Sector.addActionListener(new ActionListener() {
    1273                 public void actionPerformed(ActionEvent e) {
    1274                     buoy.setSectorIndex(cbM01Sector.getSelectedIndex());
    1275                     buoy.paintSign();
    1276                 }
    1277             });
    1278         }
    1279         return cbM01Sector;
    1280     }
    1281 
    1282     private JTextField getTfM01Bearing() {
    1283         if (tfM01Bearing == null) {
    1284             tfM01Bearing = new JTextField();
    1285             tfM01Bearing.setBounds(new Rectangle(255, 295, 30, 20));
    1286             tfM01Bearing.addFocusListener(new FocusAdapter() {
    1287                 public void focusLost(FocusEvent e) {
    1288                     buoy.setBearing1(tfM01Bearing.getText().trim());
    1289                 }
    1290             });
    1291         }
    1292         return tfM01Bearing;
    1293     }
    1294 
    1295     private JTextField getTfM02Bearing() {
    1296         if (tfM02Bearing == null) {
    1297             tfM02Bearing = new JTextField();
    1298             tfM02Bearing.setBounds(new Rectangle(300, 295, 30, 20));
    1299             tfM02Bearing.addFocusListener(new FocusAdapter() {
    1300                 public void focusLost(FocusEvent e) {
    1301                     buoy.setBearing2(tfM02Bearing.getText().trim());
    1302                 }
    1303             });
    1304         }
    1305         return tfM02Bearing;
    1306     }
    1307 
    1308     private JTextField getTfM01Radius() {
    1309         if (tfM01Radius == null) {
    1310             tfM01Radius = new JTextField();
    1311             tfM01Radius.setBounds(new Rectangle(355, 295, 30, 20));
    1312             tfM01Radius.addFocusListener(new FocusAdapter() {
    1313                 public void focusLost(FocusEvent e) {
    1314                     buoy.setRadius(tfM01Radius.getText().trim());
    1315                 }
    1316             });
    1317         }
    1318         return tfM01Radius;
    1319     }
    1320 
    1321     private JButton getBM01Close() {
    1322         if (bM01Close == null) {
    1323             bM01Close = new JButton();
    1324             bM01Close.setBounds(new Rectangle(20, 325, 110, 20));
    1325             bM01Close.setText(tr("Close"));
    1326             bM01Close.addActionListener(new ActionListener() {
    1327                 public void actionPerformed(ActionEvent e) {
    1328                     // aufraeumen
    1329                     if (obuoy != null)
    1330                         PicRebuild();
    1331                     // Deaktivierung des Listeners
    1332                     DataSet.removeSelectionListener(SmpListener);
    1333                     Selection = null;
    1334                     SmpItem.setEnabled(true);
    1335                     onode = null;
    1336 
    1337                     dM01SeaMap.dispose();
    1338                 }
    1339             });
    1340         }
    1341 
    1342         return bM01Close;
    1343     }
    1344 
    1345     private JButton getBM01Save() {
    1346         if (bM01Save == null) {
    1347             bM01Save = new JButton();
    1348             bM01Save.setBounds(new Rectangle(150, 325, 110, 20));
    1349             bM01Save.setText(tr("Save"));
    1350             bM01Save.setEnabled(false);
    1351 
    1352             bM01Save.addActionListener(new ActionListener() {
    1353                 public void actionPerformed(ActionEvent e) {
    1354                     cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
    1355                             "/images/Auge.png"))); //$NON-NLS-1$
    1356                     cM01IconVisible.setSelected(true);
    1357 
    1358                     buoy.saveSign();
    1359                 }
    1360             });
    1361         }
    1362 
    1363         return bM01Save;
    1364     }
    1365 
    1366     private JCheckBox getCM01IconVisible() {
    1367         if (cM01IconVisible == null) {
    1368             cM01IconVisible = new JCheckBox();
    1369             cM01IconVisible.setBounds(new Rectangle(310, 325, 30, 21));
    1370             cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
    1371                     "/images/AugeN.png"))); //$NON-NLS-1$
    1372             cM01IconVisible.setSelected(false);
    1373             cM01IconVisible.addActionListener(new ActionListener() {
    1374                 public void actionPerformed(ActionEvent e) {
    1375                     Command c;
    1376                     Node n = null;
    1377                     DataSet ds = Main.main.getCurrentDataSet();
    1378 
    1379                     if (buoy != null)
    1380                         n = buoy.getNode();
    1381 
    1382                     if (cM01IconVisible.isSelected()) {
    1383                         cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
    1384                                 "/images/AugeN.png"))); //$NON-NLS-1$
    1385                         if (n != null) {
    1386                             // seamark loeschen, wenn notwendig
    1387                             if (n.getKeys().containsKey("seamark")) { //$NON-NLS-1$
    1388                                 smb = n.getKeys().get("seamark"); // smb merken //$NON-NLS-1$
    1389 
    1390                                 c = new ChangePropertyCommand(n, "seamark", null); //$NON-NLS-1$
    1391                                 c.executeCommand();
    1392                                 ds.fireSelectionChanged();
    1393                                 obuoy = buoy;
    1394                             }
    1395 
    1396                             // seamark:type loeschen, wenn notwendig
    1397                             if (n.getKeys().containsKey("seamark:type")) { //$NON-NLS-1$
    1398                                 smt = n.getKeys().get("seamark:type"); // smt merken //$NON-NLS-1$
    1399 
    1400                                 c = new ChangePropertyCommand(n, "seamark:type", null); //$NON-NLS-1$
    1401                                 c.executeCommand();
    1402                                 ds.fireSelectionChanged();
    1403                                 obuoy = buoy;
    1404                             }
    1405 
    1406                         }
    1407                     } else {
    1408                         cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
    1409                                 "/images/Auge.png"))); //$NON-NLS-1$
    1410                         PicRebuild();
    1411                         obuoy = null;
    1412                     }
    1413                     buoy.paintSign();
    1414                 }
    1415             });
    1416         }
    1417         return cM01IconVisible;
    1418     }
    1419 
    1420     private JTextField getSM01StatusBar() {
    1421         if (sM01StatusBar == null) {
    1422             sM01StatusBar = new JTextField();
    1423             sM01StatusBar.setBounds(new Rectangle(7, 355, 385, 20));
    1424             sM01StatusBar.setBackground(SystemColor.activeCaptionBorder);
    1425         }
    1426         return sM01StatusBar;
    1427     }
     922        private JTextField getTfM01Name() {
     923                if (tfM01Name == null) {
     924                        tfM01Name = new JTextField();
     925                        tfM01Name.setBounds(new Rectangle(50, 120, 150, 20));
     926                        tfM01Name.addFocusListener(new FocusAdapter() {
     927                                public void focusLost(FocusEvent e) {
     928                                        buoy.setName(tfM01Name.getText());
     929                                        buoy.paintSign();
     930                                }
     931                        });
     932                }
     933                return tfM01Name;
     934        }
     935
     936        private JCheckBox getCM01TopMark() {
     937                if (cM01TopMark == null) {
     938                        cM01TopMark = new JCheckBox();
     939                        cM01TopMark.setBounds(new Rectangle(10, 170, 100, 20));
     940                        cM01TopMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     941                        cM01TopMark.setText(Messages.getString("SmpDialogAction.166")); //$NON-NLS-1$
     942                        cM01TopMark.addItemListener(new ItemListener() {
     943                                public void itemStateChanged(ItemEvent e) {
     944                                        if (buoy == null) {
     945                                                return;
     946                                        }
     947                                        buoy.setTopMark(cM01TopMark.isSelected());
     948                                        buoy.paintSign();
     949                                }
     950                        });
     951                }
     952                return cM01TopMark;
     953        }
     954
     955        private JComboBox getCbM01TopMark() {
     956                if (cbM01TopMark == null) {
     957                        cbM01TopMark = new JComboBox();
     958                        cbM01TopMark.setBounds(new Rectangle(110, 170, 80, 20));
     959                        cbM01TopMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     960                        cbM01TopMark.addActionListener(new ActionListener() {
     961                                public void actionPerformed(ActionEvent e) {
     962                                        int top = cbM01TopMark.getSelectedIndex();
     963                                        buoy.paintSign();
     964                                }
     965                        });
     966                }
     967                return cbM01TopMark;
     968        }
     969
     970        private JCheckBox getCM01Radar() {
     971                if (cM01Radar == null) {
     972                        cM01Radar = new JCheckBox();
     973                        cM01Radar.setBounds(new Rectangle(10, 195, 120, 20));
     974                        cM01Radar.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     975                        cM01Radar.setText(Messages.getString("SmpDialogAction.169")); //$NON-NLS-1$
     976                        cM01Radar.addActionListener(new ActionListener() {
     977                                public void actionPerformed(ActionEvent e) {
     978                                        if (cM01Radar.isSelected()) {
     979                                                buoy.setRadar(true);
     980                                                buoy.setRacon(false);
     981                                                cM01Racon.setSelected(false);
     982                                        } else {
     983                                                buoy.setRadar(false);
     984                                        }
     985                                        buoy.paintSign();
     986                                }
     987                        });
     988                }
     989                return cM01Radar;
     990        }
     991
     992        private JCheckBox getCM01Racon() {
     993                if (cM01Racon == null) {
     994                        cM01Racon = new JCheckBox();
     995                        cM01Racon.setBounds(new Rectangle(130, 195, 110, 20));
     996                        cM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     997                        cM01Racon.setText(Messages.getString("SmpDialogAction.171")); //$NON-NLS-1$
     998                        cM01Racon.addActionListener(new ActionListener() {
     999                                public void actionPerformed(ActionEvent e) {
     1000                                        if (cM01Racon.isSelected()) {
     1001                                                buoy.setRacon(true);
     1002                                                buoy.setRadar(false);
     1003                                                cM01Radar.setSelected(false);
     1004                                        } else {
     1005                                                buoy.setRacon(false);
     1006                                        }
     1007                                        buoy.paintSign();
     1008                                }
     1009                        });
     1010                }
     1011                return cM01Racon;
     1012        }
     1013
     1014        private JComboBox getCbM01Racon() {
     1015                if (cbM01Racon == null) {
     1016                        cbM01Racon = new JComboBox();
     1017                        cbM01Racon.setBounds(new Rectangle(240, 195, 80, 20));
     1018                        cbM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     1019                        cbM01Racon.removeAllItems();
     1020                        cbM01Racon.addItem("Any");
     1021                        cbM01Racon.addItem("Racon");
     1022                        cbM01Racon.addItem("Ramark");
     1023                        cbM01Racon.addItem("Leading");
     1024                        cbM01Racon.addActionListener(new ActionListener() {
     1025                                public void actionPerformed(ActionEvent e) {
     1026                                        int rac = cbM01Racon.getSelectedIndex();
     1027                                        buoy.setRaType(rac);
     1028                                        buoy.paintSign();
     1029                                }
     1030                        });
     1031                }
     1032                return cbM01Racon;
     1033        }
     1034
     1035        private JTextField getTfM01Racon() {
     1036                if (tfM01Racon == null) {
     1037                        tfM01Racon = new JTextField();
     1038                        tfM01Racon.setBounds(new Rectangle(345, 195, 30, 20));
     1039                        tfM01Racon.addFocusListener(new FocusAdapter() {
     1040                                public void focusLost(FocusEvent e) {
     1041                                        buoy.setRaconGroup(tfM01Racon.getText().trim());
     1042                                        buoy.paintSign();
     1043                                }
     1044                        });
     1045                }
     1046                return tfM01Racon;
     1047        }
     1048
     1049        private JCheckBox getCM01Fog() {
     1050                if (cM01Fog == null) {
     1051                        cM01Fog = new JCheckBox();
     1052                        cM01Fog.setBounds(new Rectangle(10, 220, 90, 20));
     1053                        cM01Fog.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     1054                        cM01Fog.setText(Messages.getString("SmpDialogAction.174")); //$NON-NLS-1$
     1055                        cM01Fog.addActionListener(new ActionListener() {
     1056                                public void actionPerformed(ActionEvent e) {
     1057                                        buoy.setFog(cM01Fog.isSelected());
     1058                                        buoy.paintSign();
     1059                                }
     1060                        });
     1061                }
     1062                return cM01Fog;
     1063        }
     1064
     1065        private JComboBox getCbM01Fog() {
     1066                if (cbM01Fog == null) {
     1067                        cbM01Fog = new JComboBox();
     1068                        cbM01Fog.setBounds(new Rectangle(100, 220, 70, 20));
     1069                        cbM01Fog.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     1070                        cbM01Fog.removeAllItems();
     1071                        cbM01Fog.addItem("Any");
     1072                        cbM01Fog.addItem("Horn");
     1073                        cbM01Fog.addItem("Siren");
     1074                        cbM01Fog.addItem("Dia");
     1075                        cbM01Fog.addItem("Bell");
     1076                        cbM01Fog.addItem("Whis");
     1077                        cbM01Fog.addItem("Gong");
     1078                        cbM01Fog.addItem("Explos");
     1079                        cbM01Fog.addActionListener(new ActionListener() {
     1080                                public void actionPerformed(ActionEvent e) {
     1081                                        if (cbM01Fog.getSelectedIndex() > 0)
     1082                                                buoy.setFogSound(cbM01Fog.getSelectedIndex());
     1083                                        else
     1084                                                buoy.setFogSound(0);
     1085                                        buoy.paintSign();
     1086                                }
     1087                        });
     1088                }
     1089                return cbM01Fog;
     1090        }
     1091
     1092        private JTextField getTfM01FogGroup() {
     1093                if (tfM01FogGroup == null) {
     1094                        tfM01FogGroup = new JTextField();
     1095                        tfM01FogGroup.setBounds(new Rectangle(243, 220, 30, 20));
     1096                        tfM01FogGroup.addFocusListener(new FocusAdapter() {
     1097                                public void focusLost(FocusEvent e) {
     1098                                        buoy.setFogGroup(tfM01FogGroup.getText().trim());
     1099                                        buoy.paintSign();
     1100                                }
     1101                        });
     1102                }
     1103                return tfM01FogGroup;
     1104        }
     1105
     1106        private JTextField getTfM01FogPeriod() {
     1107                if (tfM01FogPeriod == null) {
     1108                        tfM01FogPeriod = new JTextField();
     1109                        tfM01FogPeriod.setBounds(new Rectangle(345, 220, 30, 20));
     1110                        tfM01FogPeriod.addFocusListener(new FocusAdapter() {
     1111                                public void focusLost(FocusEvent e) {
     1112                                        buoy.setFogPeriod(tfM01FogPeriod.getText().trim());
     1113                                        buoy.paintSign();
     1114                                }
     1115                        });
     1116                }
     1117                return tfM01FogPeriod;
     1118        }
     1119
     1120        private JCheckBox getCM01Fired() {
     1121                if (cM01Fired == null) {
     1122                        cM01Fired = new JCheckBox();
     1123                        cM01Fired.setBounds(new Rectangle(10, 245, 75, 20));
     1124                        cM01Fired.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     1125                        cM01Fired.setText(Messages.getString("SmpDialogAction.177")); //$NON-NLS-1$
     1126                        cM01Fired.addItemListener(new ItemListener() {
     1127                                public void itemStateChanged(ItemEvent e) {
     1128                                        if (buoy == null) {
     1129                                                return;
     1130                                        }
     1131                                        buoy.setFired(cM01Fired.isSelected());
     1132                                        buoy.setLightColour();
     1133                                        buoy.paintSign();
     1134                                }
     1135                        });
     1136                }
     1137
     1138                return cM01Fired;
     1139        }
     1140
     1141        private JComboBox getCbM01Kennung() {
     1142                if (cbM01Kennung == null) {
     1143                        cbM01Kennung = new JComboBox();
     1144                        cbM01Kennung.setBounds(new Rectangle(305, 245, 70, 20));
     1145                        cbM01Kennung.addActionListener(new ActionListener() {
     1146                                public void actionPerformed(ActionEvent e) {
     1147                                        int i1, i2;
     1148                                        String c = ""; //$NON-NLS-1$ //$NON-NLS-2$
     1149                                        String it = (String) cbM01Kennung.getSelectedItem();
     1150
     1151                                        if (it == null)
     1152                                                return;
     1153                                        if (it.equals(Messages.getString("SmpDialogAction.212"))) //$NON-NLS-1$
     1154                                                return;
     1155                                        if (buoy == null)
     1156                                                return;
     1157
     1158                                        if (it.contains("(")) {
     1159                                                i1 = it.indexOf("(");
     1160                                                i2 = it.indexOf(")");
     1161                                                c = it.substring(i1 + 1, i2);
     1162                                                it = it.substring(0, i1) + it.substring(i2 + 1);
     1163                                        }
     1164                                        if (!c.isEmpty())
     1165                                                buoy.setLightGroup(c);
     1166                                        ;
     1167                                        buoy.setLightChar(it);
     1168                                        buoy.paintSign();
     1169                                }
     1170                        });
     1171                }
     1172                return cbM01Kennung;
     1173        }
     1174
     1175        private JTextField getTfM01Height() {
     1176                if (tfM01Height == null) {
     1177                        tfM01Height = new JTextField();
     1178                        tfM01Height.setBounds(new Rectangle(54, 270, 30, 20));
     1179                        tfM01Height.addFocusListener(new FocusAdapter() {
     1180                                public void focusLost(FocusEvent e) {
     1181                                        buoy.setHeight(tfM01Height.getText().trim());
     1182                                        buoy.paintSign();
     1183                                }
     1184                        });
     1185                }
     1186                return tfM01Height;
     1187        }
     1188
     1189        private JTextField getTfM01Range() {
     1190                if (tfM01Range == null) {
     1191                        tfM01Range = new JTextField();
     1192                        tfM01Range.setBounds(new Rectangle(151, 270, 30, 20));
     1193                        tfM01Range.addFocusListener(new FocusAdapter() {
     1194                                public void focusLost(FocusEvent e) {
     1195                                        buoy.setRange(tfM01Range.getText().trim());
     1196                                        buoy.paintSign();
     1197                                }
     1198                        });
     1199                }
     1200                return tfM01Range;
     1201        }
     1202
     1203        private JTextField getTfM01Group() {
     1204                if (tfM01Group == null) {
     1205                        tfM01Group = new JTextField();
     1206                        tfM01Group.setBounds(new Rectangle(255, 270, 30, 20));
     1207                        tfM01Group.addFocusListener(new FocusAdapter() {
     1208                                public void focusLost(FocusEvent e) {
     1209                                        buoy.setLightGroup(tfM01Group.getText().trim());
     1210                                        buoy.paintSign();
     1211                                }
     1212                        });
     1213                }
     1214                return tfM01Group;
     1215        }
     1216
     1217        private JTextField getTfM01RepeatTime() {
     1218                if (tfM01RepeatTime == null) {
     1219                        tfM01RepeatTime = new JTextField();
     1220                        tfM01RepeatTime.setBounds(new Rectangle(345, 270, 30, 20));
     1221                        tfM01RepeatTime.addActionListener(new ActionListener() {
     1222                                public void actionPerformed(ActionEvent e) {
     1223                                        buoy.setLightPeriod(tfM01RepeatTime.getText().trim());
     1224                                        buoy.paintSign();
     1225                                }
     1226                        });
     1227
     1228                        tfM01RepeatTime.addFocusListener(new FocusAdapter() {
     1229                                public void focusLost(FocusEvent e) {
     1230                                        buoy.setLightPeriod(tfM01RepeatTime.getText().trim());
     1231                                        buoy.paintSign();
     1232                                }
     1233                        });
     1234                }
     1235                return tfM01RepeatTime;
     1236        }
     1237
     1238        private JComboBox getCbM01Colour() {
     1239                if (cbM01Colour == null) {
     1240                        cbM01Colour = new JComboBox();
     1241                        cbM01Colour.setBounds(new Rectangle(165, 295, 40, 20));
     1242                        cbM01Colour.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     1243                        cbM01Colour.addItem(""); //$NON-NLS-1$
     1244                        cbM01Colour.addItem(Messages.getString("SmpDialogAction.190")); //$NON-NLS-1$
     1245                        cbM01Colour.addItem(Messages.getString("SmpDialogAction.191")); //$NON-NLS-1$
     1246                        cbM01Colour.addItem(Messages.getString("SmpDialogAction.192")); //$NON-NLS-1$
     1247                        cbM01Colour.addActionListener(new ActionListener() {
     1248                                public void actionPerformed(ActionEvent e) {
     1249                                        buoy.setLightColour((String) cbM01Colour.getSelectedItem());
     1250                                        buoy.paintSign();
     1251                                }
     1252                        });
     1253                }
     1254                return cbM01Colour;
     1255        }
     1256
     1257        private JComboBox getCbM01Sector() {
     1258                if (cbM01Sector == null) {
     1259                        cbM01Sector = new JComboBox();
     1260                        cbM01Sector.setBounds(new Rectangle(55, 295, 50, 20));
     1261                        cbM01Sector.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
     1262                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.194")); //$NON-NLS-1$
     1263                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.195")); //$NON-NLS-1$
     1264                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.196")); //$NON-NLS-1$
     1265                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.197")); //$NON-NLS-1$
     1266                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.198")); //$NON-NLS-1$
     1267                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.199")); //$NON-NLS-1$
     1268                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.200")); //$NON-NLS-1$
     1269                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.201")); //$NON-NLS-1$
     1270                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.202")); //$NON-NLS-1$
     1271                        cbM01Sector.addItem(Messages.getString("SmpDialogAction.203")); //$NON-NLS-1$
     1272                        cbM01Sector.addActionListener(new ActionListener() {
     1273                                public void actionPerformed(ActionEvent e) {
     1274                                        buoy.setSectorIndex(cbM01Sector.getSelectedIndex());
     1275                                        buoy.paintSign();
     1276                                }
     1277                        });
     1278                }
     1279                return cbM01Sector;
     1280        }
     1281
     1282        private JTextField getTfM01Bearing() {
     1283                if (tfM01Bearing == null) {
     1284                        tfM01Bearing = new JTextField();
     1285                        tfM01Bearing.setBounds(new Rectangle(255, 295, 30, 20));
     1286                        tfM01Bearing.addFocusListener(new FocusAdapter() {
     1287                                public void focusLost(FocusEvent e) {
     1288                                        buoy.setBearing1(tfM01Bearing.getText().trim());
     1289                                }
     1290                        });
     1291                }
     1292                return tfM01Bearing;
     1293        }
     1294
     1295        private JTextField getTfM02Bearing() {
     1296                if (tfM02Bearing == null) {
     1297                        tfM02Bearing = new JTextField();
     1298                        tfM02Bearing.setBounds(new Rectangle(300, 295, 30, 20));
     1299                        tfM02Bearing.addFocusListener(new FocusAdapter() {
     1300                                public void focusLost(FocusEvent e) {
     1301                                        buoy.setBearing2(tfM02Bearing.getText().trim());
     1302                                }
     1303                        });
     1304                }
     1305                return tfM02Bearing;
     1306        }
     1307
     1308        private JTextField getTfM01Radius() {
     1309                if (tfM01Radius == null) {
     1310                        tfM01Radius = new JTextField();
     1311                        tfM01Radius.setBounds(new Rectangle(355, 295, 30, 20));
     1312                        tfM01Radius.addFocusListener(new FocusAdapter() {
     1313                                public void focusLost(FocusEvent e) {
     1314                                        buoy.setRadius(tfM01Radius.getText().trim());
     1315                                }
     1316                        });
     1317                }
     1318                return tfM01Radius;
     1319        }
     1320
     1321        private JButton getBM01Close() {
     1322                if (bM01Close == null) {
     1323                        bM01Close = new JButton();
     1324                        bM01Close.setBounds(new Rectangle(20, 325, 110, 20));
     1325                        bM01Close.setText(tr("Close"));
     1326                        bM01Close.addActionListener(new ActionListener() {
     1327                                public void actionPerformed(ActionEvent e) {
     1328                                        // aufraeumen
     1329                                        if (obuoy != null)
     1330                                                PicRebuild();
     1331                                        // Deaktivierung des Listeners
     1332                                        DataSet.removeSelectionListener(SmpListener);
     1333                                        Selection = null;
     1334                                        SmpItem.setEnabled(true);
     1335                                        onode = null;
     1336
     1337                                        dM01SeaMap.dispose();
     1338                                }
     1339                        });
     1340                }
     1341
     1342                return bM01Close;
     1343        }
     1344
     1345        private JButton getBM01Save() {
     1346                if (bM01Save == null) {
     1347                        bM01Save = new JButton();
     1348                        bM01Save.setBounds(new Rectangle(150, 325, 110, 20));
     1349                        bM01Save.setText(tr("Save"));
     1350                        bM01Save.setEnabled(false);
     1351
     1352                        bM01Save.addActionListener(new ActionListener() {
     1353                                public void actionPerformed(ActionEvent e) {
     1354                                        cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
     1355                                                        "/images/Auge.png"))); //$NON-NLS-1$
     1356                                        cM01IconVisible.setSelected(true);
     1357
     1358                                        buoy.saveSign();
     1359                                }
     1360                        });
     1361                }
     1362
     1363                return bM01Save;
     1364        }
     1365
     1366        private JCheckBox getCM01IconVisible() {
     1367                if (cM01IconVisible == null) {
     1368                        cM01IconVisible = new JCheckBox();
     1369                        cM01IconVisible.setBounds(new Rectangle(310, 325, 30, 21));
     1370                        cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
     1371                                        "/images/AugeN.png"))); //$NON-NLS-1$
     1372                        cM01IconVisible.setSelected(false);
     1373                        cM01IconVisible.addActionListener(new ActionListener() {
     1374                                public void actionPerformed(ActionEvent e) {
     1375                                        Command c;
     1376                                        Node n = null;
     1377                                        DataSet ds = Main.main.getCurrentDataSet();
     1378
     1379                                        if (buoy != null)
     1380                                                n = buoy.getNode();
     1381
     1382                                        if (cM01IconVisible.isSelected()) {
     1383                                                cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
     1384                                                                "/images/AugeN.png"))); //$NON-NLS-1$
     1385                                                if (n != null) {
     1386                                                        // seamark loeschen, wenn notwendig
     1387                                                        if (n.getKeys().containsKey("seamark")) { //$NON-NLS-1$
     1388                                                                smb = n.getKeys().get("seamark"); // smb merken //$NON-NLS-1$
     1389
     1390                                                                c = new ChangePropertyCommand(n, "seamark", null); //$NON-NLS-1$
     1391                                                                c.executeCommand();
     1392                                                                ds.fireSelectionChanged();
     1393                                                                obuoy = buoy;
     1394                                                        }
     1395
     1396                                                        // seamark:type loeschen, wenn notwendig
     1397                                                        if (n.getKeys().containsKey("seamark:type")) { //$NON-NLS-1$
     1398                                                                smt = n.getKeys().get("seamark:type"); // smt merken //$NON-NLS-1$
     1399
     1400                                                                c = new ChangePropertyCommand(n, "seamark:type", null); //$NON-NLS-1$
     1401                                                                c.executeCommand();
     1402                                                                ds.fireSelectionChanged();
     1403                                                                obuoy = buoy;
     1404                                                        }
     1405
     1406                                                }
     1407                                        } else {
     1408                                                cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
     1409                                                                "/images/Auge.png"))); //$NON-NLS-1$
     1410                                                PicRebuild();
     1411                                                obuoy = null;
     1412                                        }
     1413                                        buoy.paintSign();
     1414                                }
     1415                        });
     1416                }
     1417                return cM01IconVisible;
     1418        }
     1419
     1420        private JTextField getSM01StatusBar() {
     1421                if (sM01StatusBar == null) {
     1422                        sM01StatusBar = new JTextField();
     1423                        sM01StatusBar.setBounds(new Rectangle(7, 355, 385, 20));
     1424                        sM01StatusBar.setBackground(SystemColor.activeCaptionBorder);
     1425                }
     1426                return sM01StatusBar;
     1427        }
    14281428
    14291429}
  • applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java

    r23193 r23269  
    1414abstract public class SeaMark {
    1515
    16     /**
    17     * CONSTANTS
    18     */
    19 
    20     /**
    21     * Colours
    22     */
    23 
    24     public final static int UNKNOWN_COLOUR = 0;
    25     public final static int RED = 1;
    26     public final static int GREEN = 2;
    27     public final static int RED_GREEN_RED = 3;
    28     public final static int GREEN_RED_GREEN = 4;
    29     public final static int RED_WHITE = 5;
    30     public final static int BLACK_YELLOW = 6;
    31     public final static int BLACK_YELLOW_BLACK = 7;
    32     public final static int YELLOW_BLACK = 8;
    33     public final static int YELLOW_BLACK_YELLOW = 9;
    34     public final static int BLACK_RED_BLACK = 10;
    35     public final static int YELLOW = 11;
    36     public final static int WHITE_LIGHT = 1;
    37     public final static int RED_LIGHT = 2;
    38     public final static int GREEN_LIGHT = 3;
    39 
    40     /**
    41     * Types - correspond to TypeIndex
    42     */
    43     public final static int UNKNOWN_TYPE = 0;
    44     public final static int LATERAL = 1;
    45     public final static int CARDINAL = 2;
    46     public final static int SAFE_WATER = 3;
    47     public final static int ISOLATED_DANGER = 4;
    48     public final static int SPECIAL_PURPOSE = 5;
    49     public final static int LIGHT = 6;
    50 
    51     /**
    52     * Categories - correspond to CatIndex
    53     */
    54     public final static int UNKNOWN_CAT = 0;
    55     public final static int PORT_HAND = 1;
    56     public final static int STARBOARD_HAND = 2;
    57     public final static int PREF_PORT_HAND = 3;
    58     public final static int PREF_STARBOARD_HAND = 4;
    59     public final static int CARD_NORTH = 1;
    60     public final static int CARD_EAST = 2;
    61     public final static int CARD_SOUTH = 3;
    62     public final static int CARD_WEST = 4;
    63     public final static int LIGHT_HOUSE = 1;
    64     public final static int LIGHT_MAJOR = 2;
    65     public final static int LIGHT_MINOR = 3;
    66     public final static int LIGHT_VESSEL = 4;
    67 
    68     /**
    69     * Regions
    70     */
    71     public final static boolean IALA_A = false;
    72     public final static boolean IALA_B = true;
    73 
    74     /**
    75     * Shapes - correspond to StyleIndex
    76     */
    77     public final static int UNKNOWN_SHAPE = 0;
    78     public final static int LAT_CAN = 1;
    79     public final static int LAT_CONE = 1;
    80     public final static int LAT_PILLAR = 2;
    81     public final static int LAT_SPAR = 3;
    82     public final static int LAT_BEACON = 4;
    83     public final static int LAT_TOWER = 5;
    84     public final static int LAT_FLOAT = 6;
    85     public final static int LAT_PERCH = 7;
    86     public final static int CARD_PILLAR = 1;
    87     public final static int CARD_SPAR = 2;
    88     public final static int CARD_BEACON = 3;
    89     public final static int CARD_TOWER = 4;
    90     public final static int CARD_FLOAT = 5;
    91     public final static int SAFE_PILLAR = 1;
    92     public final static int SAFE_SPAR = 2;
    93     public final static int SAFE_SPHERE = 3;
    94     public final static int SAFE_BEACON = 4;
    95     public final static int SAFE_FLOAT = 5;
    96     public final static int ISOL_PILLAR = 1;
    97     public final static int ISOL_SPAR = 2;
    98     public final static int ISOL_BEACON = 3;
    99     public final static int ISOL_TOWER = 4;
    100     public final static int ISOL_FLOAT = 5;
    101     public final static int SPEC_PILLAR = 1;
    102     public final static int SPEC_CAN = 2;
    103     public final static int SPEC_CONE = 3;
    104     public final static int SPEC_SPAR = 4;
    105     public final static int SPEC_BEACON = 5;
    106     public final static int SPEC_TOWER = 6;
    107     public final static int SPEC_FLOAT = 7;
    108     public final static int SPEC_SPHERE = 8;
    109     public final static int SPEC_BARREL = 9;
    110    
    111     /**
    112     * Radar Beacons - correspond to Ratyp Index
    113     */
    114    
    115     public final static int UNKNOWN_RATYPE = 0;
    116     public final static int RATYPE_RACON = 1;
    117     public final static int RATYPE_RAMARK = 2;
    118     public final static int RATYPE_LEADING = 3;
    119 
    120     /**
    121     * Fog Signals - correspond to FogSound Index
    122     */
    123    
    124     public final static int UNKNOWN_FOG = 0;
    125     public final static int FOG_HORN = 1;
    126     public final static int FOG_SIREN = 2;
    127     public final static int FOG_DIA = 3;
    128     public final static int FOG_BELL = 4;
    129     public final static int FOG_WHIS = 5;
    130     public final static int FOG_GONG = 6;
    131     public final static int FOG_EXPLOS = 7;
    132 
    133     /**
    134     * Variables
    135     */
    136 
    137     /**
    138     * private Variablen
    139     */
    140 
    141     public abstract void paintSign();
    142 
    143     public abstract void saveSign();
    144 
    145     private int Colour = UNKNOWN_COLOUR;
    146 
    147     public int getColour() {
    148         return Colour;
    149     }
    150 
    151     public void setColour(int colour) {
    152         if (colour < UNKNOWN_COLOUR || colour > RED_WHITE) {
    153             return;
    154         }
    155         Colour = colour;
    156 
    157     }
    158 
    159     private String ErrMsg = null;
    160 
    161     public String getErrMsg() {
    162         return ErrMsg;
    163     }
    164 
    165     public void setErrMsg(String errMsg) {
    166         ErrMsg = errMsg;
    167     }
    168 
    169     private String Name;
    170 
    171     public String getName() {
    172         return Name;
    173     }
    174 
    175     public void setName(String name) {
    176         Name = name;
    177     }
    178 
    179     private boolean valid = true;
    180 
    181     public boolean isValid() {
    182         return valid;
    183     }
    184 
    185     public void setValid(boolean valid) {
    186         this.valid = valid;
    187 
    188     }
    189 
    190     protected void delSeaMarkKeys(Node node) {
    191         Iterator<String> it = node.getKeys().keySet().iterator();
    192         String str;
    193 
    194         while (it.hasNext()) {
    195             str = it.next();
    196 
    197             if (str.contains("seamark") == true)
    198                 if (str.compareTo("seamark") != 0) {
    199                     Main.main.undoRedo.add(new ChangePropertyCommand(node, str, null));
    200                 }
    201         }
    202     }
     16        /**
     17        * CONSTANTS
     18        */
     19
     20        /**
     21        * Colours
     22        */
     23
     24        public final static int UNKNOWN_COLOUR = 0;
     25        public final static int RED = 1;
     26        public final static int GREEN = 2;
     27        public final static int RED_GREEN_RED = 3;
     28        public final static int GREEN_RED_GREEN = 4;
     29        public final static int RED_WHITE = 5;
     30        public final static int BLACK_YELLOW = 6;
     31        public final static int BLACK_YELLOW_BLACK = 7;
     32        public final static int YELLOW_BLACK = 8;
     33        public final static int YELLOW_BLACK_YELLOW = 9;
     34        public final static int BLACK_RED_BLACK = 10;
     35        public final static int YELLOW = 11;
     36        public final static int WHITE_LIGHT = 1;
     37        public final static int RED_LIGHT = 2;
     38        public final static int GREEN_LIGHT = 3;
     39
     40        /**
     41        * Types - correspond to TypeIndex
     42        */
     43        public final static int UNKNOWN_TYPE = 0;
     44        public final static int LATERAL = 1;
     45        public final static int CARDINAL = 2;
     46        public final static int SAFE_WATER = 3;
     47        public final static int ISOLATED_DANGER = 4;
     48        public final static int SPECIAL_PURPOSE = 5;
     49        public final static int LIGHT = 6;
     50
     51        /**
     52        * Categories - correspond to CatIndex
     53        */
     54        public final static int UNKNOWN_CAT = 0;
     55        public final static int PORT_HAND = 1;
     56        public final static int STARBOARD_HAND = 2;
     57        public final static int PREF_PORT_HAND = 3;
     58        public final static int PREF_STARBOARD_HAND = 4;
     59        public final static int CARD_NORTH = 1;
     60        public final static int CARD_EAST = 2;
     61        public final static int CARD_SOUTH = 3;
     62        public final static int CARD_WEST = 4;
     63        public final static int LIGHT_HOUSE = 1;
     64        public final static int LIGHT_MAJOR = 2;
     65        public final static int LIGHT_MINOR = 3;
     66        public final static int LIGHT_VESSEL = 4;
     67
     68        /**
     69        * Regions
     70        */
     71        public final static boolean IALA_A = false;
     72        public final static boolean IALA_B = true;
     73
     74        /**
     75        * Shapes - correspond to StyleIndex
     76        */
     77        public final static int UNKNOWN_SHAPE = 0;
     78        public final static int LAT_CAN = 1;
     79        public final static int LAT_CONE = 1;
     80        public final static int LAT_PILLAR = 2;
     81        public final static int LAT_SPAR = 3;
     82        public final static int LAT_BEACON = 4;
     83        public final static int LAT_TOWER = 5;
     84        public final static int LAT_FLOAT = 6;
     85        public final static int LAT_PERCH = 7;
     86        public final static int CARD_PILLAR = 1;
     87        public final static int CARD_SPAR = 2;
     88        public final static int CARD_BEACON = 3;
     89        public final static int CARD_TOWER = 4;
     90        public final static int CARD_FLOAT = 5;
     91        public final static int SAFE_PILLAR = 1;
     92        public final static int SAFE_SPAR = 2;
     93        public final static int SAFE_SPHERE = 3;
     94        public final static int SAFE_BEACON = 4;
     95        public final static int SAFE_FLOAT = 5;
     96        public final static int ISOL_PILLAR = 1;
     97        public final static int ISOL_SPAR = 2;
     98        public final static int ISOL_BEACON = 3;
     99        public final static int ISOL_TOWER = 4;
     100        public final static int ISOL_FLOAT = 5;
     101        public final static int SPEC_PILLAR = 1;
     102        public final static int SPEC_CAN = 2;
     103        public final static int SPEC_CONE = 3;
     104        public final static int SPEC_SPAR = 4;
     105        public final static int SPEC_BEACON = 5;
     106        public final static int SPEC_TOWER = 6;
     107        public final static int SPEC_FLOAT = 7;
     108        public final static int SPEC_SPHERE = 8;
     109        public final static int SPEC_BARREL = 9;
     110
     111        /**
     112        * Radar Beacons - correspond to Ratyp Index
     113        */
     114
     115        public final static int UNKNOWN_RATYPE = 0;
     116        public final static int RATYPE_RACON = 1;
     117        public final static int RATYPE_RAMARK = 2;
     118        public final static int RATYPE_LEADING = 3;
     119
     120        /**
     121        * Fog Signals - correspond to FogSound Index
     122        */
     123
     124        public final static int UNKNOWN_FOG = 0;
     125        public final static int FOG_HORN = 1;
     126        public final static int FOG_SIREN = 2;
     127        public final static int FOG_DIA = 3;
     128        public final static int FOG_BELL = 4;
     129        public final static int FOG_WHIS = 5;
     130        public final static int FOG_GONG = 6;
     131        public final static int FOG_EXPLOS = 7;
     132
     133        /**
     134        * Variables
     135        */
     136
     137        /**
     138        * private Variablen
     139        */
     140
     141        public abstract void paintSign();
     142
     143        public abstract void saveSign();
     144
     145        private int Colour = UNKNOWN_COLOUR;
     146
     147        public int getColour() {
     148                return Colour;
     149        }
     150
     151        public void setColour(int colour) {
     152                if (colour < UNKNOWN_COLOUR || colour > RED_WHITE) {
     153                        return;
     154                }
     155                Colour = colour;
     156
     157        }
     158
     159        private String ErrMsg = null;
     160
     161        public String getErrMsg() {
     162                return ErrMsg;
     163        }
     164
     165        public void setErrMsg(String errMsg) {
     166                ErrMsg = errMsg;
     167        }
     168
     169        private String Name;
     170
     171        public String getName() {
     172                return Name;
     173        }
     174
     175        public void setName(String name) {
     176                Name = name;
     177        }
     178
     179        private boolean valid = true;
     180
     181        public boolean isValid() {
     182                return valid;
     183        }
     184
     185        public void setValid(boolean valid) {
     186                this.valid = valid;
     187
     188        }
     189
     190        protected void delSeaMarkKeys(Node node) {
     191                Iterator<String> it = node.getKeys().keySet().iterator();
     192                String str;
     193
     194                while (it.hasNext()) {
     195                        str = it.next();
     196
     197                        if (str.contains("seamark") == true)
     198                                if (str.compareTo("seamark") != 0) {
     199                                        Main.main.undoRedo.add(new ChangePropertyCommand(node, str, null));
     200                                }
     201                }
     202        }
    203203
    204204}
  • applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java

    r23268 r23269  
    2323abstract public class Buoy extends SeaMark {
    2424
    25     public abstract void setLightColour();
    26 
    27     /**
    28     * private Variablen
    29     */
    30 
    31     private int BuoyIndex = 0;
    32 
    33     public int getBuoyIndex() {
    34         return BuoyIndex;
    35     }
    36 
    37     public void setBuoyIndex(int buoyIndex) {
    38         BuoyIndex = buoyIndex;
    39     }
    40 
    41     private int StyleIndex = 0;
    42 
    43     public int getStyleIndex() {
    44         return StyleIndex;
    45     }
    46 
    47     public void setStyleIndex(int styleIndex) {
    48         StyleIndex = styleIndex;
    49     }
    50 
    51     private boolean Region = false;
    52 
    53     public boolean getRegion() {
    54         return Region;
    55     }
    56 
    57     public void setRegion(boolean region) {
    58         Region = region;
    59     }
    60 
    61     private boolean Radar = false;
    62 
    63     public boolean hasRadar() {
    64         return Radar;
    65     }
    66 
    67     public void setRadar(boolean radar) {
    68         Radar = radar;
    69     }
    70 
    71     private boolean Racon = false;
    72 
    73     public boolean hasRacon() {
    74         return Racon;
    75     }
    76 
    77     public void setRacon(boolean racon) {
    78         Racon = racon;
    79     }
    80 
    81     private int RaType = 0;
    82 
    83     public int getRaType() {
    84         return RaType;
    85     }
    86 
    87     public void setRaType(int type) {
    88         RaType = type;
    89     }
    90 
    91     private String RaconGroup = "";
    92 
    93     public String getRaconGroup() {
    94         return RaconGroup;
    95     }
    96 
    97     public void setRaconGroup(String raconGroup) {
    98         RaconGroup = raconGroup;
    99     }
    100 
    101     private boolean Fog = false;
    102 
    103     public boolean hasFog() {
    104         return Fog;
    105     }
    106 
    107     public void setFog(boolean fog) {
    108         Fog = fog;
    109     }
    110 
    111     private int FogSound = 0;
    112 
    113     public int getFogSound() {
    114         return FogSound;
    115     }
    116 
    117     public void setFogSound(int sound) {
    118         FogSound = sound;
    119     }
    120 
    121     private String FogGroup = "";
    122 
    123     public String getFogGroup() {
    124         return FogGroup;
    125     }
    126 
    127     public void setFogGroup(String group) {
    128         FogGroup = group;
    129     }
    130 
    131     private String FogPeriod = "";
    132 
    133     public String getFogPeriod() {
    134         return FogPeriod;
    135     }
    136 
    137     public void setFogPeriod(String period) {
    138         FogPeriod = period;
    139     }
    140 
    141     private boolean Fired = false;
    142 
    143     public boolean isFired() {
    144         return Fired;
    145     }
    146 
    147     public void setFired(boolean fired) {
    148         Fired = fired;
    149     }
    150 
    151     private boolean Sectored = false;
    152 
    153     public boolean isSectored() {
    154         return Sectored;
    155     }
     25        public abstract void setLightColour();
     26
     27        /**
     28        * private Variablen
     29        */
     30
     31        private int BuoyIndex = 0;
     32
     33        public int getBuoyIndex() {
     34                return BuoyIndex;
     35        }
     36
     37        public void setBuoyIndex(int buoyIndex) {
     38                BuoyIndex = buoyIndex;
     39        }
     40
     41        private int StyleIndex = 0;
     42
     43        public int getStyleIndex() {
     44                return StyleIndex;
     45        }
     46
     47        public void setStyleIndex(int styleIndex) {
     48                StyleIndex = styleIndex;
     49        }
     50
     51        private boolean Region = false;
     52
     53        public boolean getRegion() {
     54                return Region;
     55        }
     56
     57        public void setRegion(boolean region) {
     58                Region = region;
     59        }
     60
     61        private boolean Radar = false;
     62
     63        public boolean hasRadar() {
     64                return Radar;
     65        }
     66
     67        public void setRadar(boolean radar) {
     68                Radar = radar;
     69        }
     70
     71        private boolean Racon = false;
     72
     73        public boolean hasRacon() {
     74                return Racon;
     75        }
     76
     77        public void setRacon(boolean racon) {
     78                Racon = racon;
     79        }
     80
     81        private int RaType = 0;
     82
     83        public int getRaType() {
     84                return RaType;
     85        }
     86
     87        public void setRaType(int type) {
     88                RaType = type;
     89        }
     90
     91        private String RaconGroup = "";
     92
     93        public String getRaconGroup() {
     94                return RaconGroup;
     95        }
     96
     97        public void setRaconGroup(String raconGroup) {
     98                RaconGroup = raconGroup;
     99        }
     100
     101        private boolean Fog = false;
     102
     103        public boolean hasFog() {
     104                return Fog;
     105        }
     106
     107        public void setFog(boolean fog) {
     108                Fog = fog;
     109        }
     110
     111        private int FogSound = 0;
     112
     113        public int getFogSound() {
     114                return FogSound;
     115        }
     116
     117        public void setFogSound(int sound) {
     118                FogSound = sound;
     119        }
     120
     121        private String FogGroup = "";
     122
     123        public String getFogGroup() {
     124                return FogGroup;
     125        }
     126
     127        public void setFogGroup(String group) {
     128                FogGroup = group;
     129        }
     130
     131        private String FogPeriod = "";
     132
     133        public String getFogPeriod() {
     134                return FogPeriod;
     135        }
     136
     137        public void setFogPeriod(String period) {
     138                FogPeriod = period;
     139        }
     140
     141        private boolean Fired = false;
     142
     143        public boolean isFired() {
     144                return Fired;
     145        }
     146
     147        public void setFired(boolean fired) {
     148                Fired = fired;
     149        }
     150
     151        private boolean Sectored = false;
     152
     153        public boolean isSectored() {
     154                return Sectored;
     155        }
    156156
    157157        public void setSectored(boolean sectored) {
     
    172172        }
    173173
    174     private int SectorIndex = 0;
    175 
    176     public int getSectorIndex() {
    177         return SectorIndex;
    178     }
    179 
    180     public void setSectorIndex(int sector) {
    181         SectorIndex = sector;
    182     }
    183 
    184     private String[] LightChar = new String[10];
    185 
    186     public String getLightChar() {
    187         if (LightChar[SectorIndex] == null)
    188             return (LightChar[0]);
    189         return LightChar[SectorIndex];
    190     }
    191 
    192     public void setLightChar(String lightChar) {
    193         if (SectorIndex == 0) {
    194             LightChar = new String[10];
    195             LightChar[0] = lightChar;
    196         } else if (LightChar[0].isEmpty())
    197             LightChar[SectorIndex] = lightChar;
    198     }
    199 
    200     private String[] LightColour = new String[10];
    201 
    202     public String getLightColour() {
    203         if (LightColour[SectorIndex] == null)
    204             return (LightColour[0]);
    205         return LightColour[SectorIndex];
    206     }
    207 
    208     public void setLightColour(String lightColour) {
    209         LightColour[SectorIndex] = lightColour;
    210     }
    211 
    212     private String[] LightGroup = new String[10];
    213 
    214     public String getLightGroup() {
    215         if (LightGroup[SectorIndex] == null)
    216             return (LightGroup[0]);
    217         return LightGroup[SectorIndex];
    218     }
    219 
    220     public void setLightGroup(String lightGroup) {
    221         if (SectorIndex == 0)
    222             LightGroup = new String[10];
    223         LightGroup[SectorIndex] = lightGroup;
    224     }
    225 
    226     protected void setLightGroup(Map<String, String> k) {
    227         String s = "";
    228         if (k.containsKey("seamark:light:group")) {
    229             s = k.get("seamark:light:group");
    230             setLightGroup(s);
    231         }
    232     }
    233 
    234     private String[] Height = new String[10];
    235 
    236     public String getHeight() {
    237         if (Height[SectorIndex] == null)
    238             return (Height[0]);
    239         return Height[SectorIndex];
    240     }
    241 
    242     public void setHeight(String height) {
    243         if (SectorIndex == 0)
    244             Height = new String[10];
    245         Height[SectorIndex] = height;
    246     }
    247 
    248     private String[] Range = new String[10];
    249 
    250     public String getRange() {
    251         if (Range[SectorIndex] == null)
    252             return (Range[0]);
    253         return Range[SectorIndex];
    254     }
    255 
    256     public void setRange(String range) {
    257         if (SectorIndex == 0)
    258             Range = new String[10];
    259         Range[SectorIndex] = range;
    260     }
    261 
    262     private String[] Bearing1 = new String[10];
    263 
    264     public String getBearing1() {
    265         if (Bearing1[SectorIndex] == null)
    266             return (Bearing1[0]);
    267         return Bearing1[SectorIndex];
    268     }
    269 
    270     public void setBearing1(String bearing) {
    271         if (SectorIndex == 0)
    272             Bearing1 = new String[10];
    273         Bearing1[SectorIndex] = bearing;
    274     }
    275 
    276     private String[] Bearing2 = new String[10];
    277 
    278     public String getBearing2() {
    279         if (Bearing2[SectorIndex] == null)
    280             return (Bearing2[0]);
    281         return Bearing2[SectorIndex];
    282     }
    283 
    284     public void setBearing2(String bearing) {
    285         if (SectorIndex == 0)
    286             Bearing2 = new String[10];
    287         Bearing2[SectorIndex] = bearing;
    288     }
    289 
    290     private String[] Radius = new String[10];
    291 
    292     public String getRadius() {
    293         if (Radius[SectorIndex] == null)
    294             return (Radius[0]);
    295         return Radius[SectorIndex];
    296     }
    297 
    298     public void setRadius(String radius) {
    299         if (SectorIndex == 0)
    300             Radius = new String[10];
    301         Radius[SectorIndex] = radius;
    302     }
    303 
    304     private String[] LightPeriod = new String[10];
    305 
    306     public String getLightPeriod() {
    307         if (LightPeriod[SectorIndex] == null)
    308             return (LightPeriod[0]);
    309         return LightPeriod[SectorIndex];
    310     }
    311 
    312     public void setLightPeriod(String lightPeriod) {
    313         String regex = "^[\\d\\s.]+$";
    314 
    315         if (!lightPeriod.isEmpty()) {
    316 
    317             Pattern pat = Pattern.compile(regex);
    318             Matcher matcher = pat.matcher(lightPeriod);
    319 
    320             if (matcher.find()) {
    321                 setErrMsg(null);
    322             } else {
    323                 setErrMsg("Must be a number");
    324                 lightPeriod = "";
    325                 dlg.tfM01RepeatTime.requestFocus();
    326             }
    327         }
    328         if (SectorIndex == 0)
    329             LightPeriod = new String[10];
    330         LightPeriod[SectorIndex] = lightPeriod;
    331     }
    332 
    333     private Node Node = null;
    334 
    335     public Node getNode() {
    336         return Node;
    337     }
    338 
    339     public void setNode(Node node) {
    340         Node = node;
    341     }
    342 
    343     private boolean TopMark = false;
    344 
    345     public boolean hasTopMark() {
    346         return TopMark;
    347     }
    348 
    349     public void setTopMark(boolean topMark) {
    350         TopMark = topMark;
    351         /*
    352         * if (dlg.cM01TopMark == null) { return; }
    353         */
    354         dlg.cM01TopMark.setSelected(topMark);
    355     }
    356 
    357     protected SmpDialogAction dlg = null; // hier wird der Dialog referenziert
    358 
    359     public SmpDialogAction getDlg() {
    360         return dlg;
    361     }
    362 
    363     public void setDlg(SmpDialogAction dlg) {
    364         this.dlg = dlg;
    365     }
    366 
    367     protected Buoy(SmpDialogAction dia) {
    368         dlg = dia;
    369     }
    370 
    371     public boolean isValid() {
    372         return false;
    373     }
    374 
    375     public void parseLights(Map<String, String> k) {
    376         setFired(false);
    377         setSectored(false);
    378         Iterator it = k.entrySet().iterator();
    379         while (it.hasNext()) {
    380             Map.Entry entry = (Map.Entry) it.next();
    381             String key = (String) entry.getKey();
    382             String value = ((String) entry.getValue()).trim();
    383             if (key.contains("seamark:light:")) {
    384                 setFired(true);
    385                 int index = 0;
    386                 key = key.substring(14);
    387                 if (key.matches("^\\d:.*")) {
    388                     index = key.charAt(0) - '0';
    389                     key = key.substring(2);
    390                 } else if (key.matches("^\\d$")) {
    391                     index = key.charAt(0) - '0';
    392                     String values[] = value.split(":");
    393                     if (values[0].equals("red"))
    394                         LightColour[index] = "R";
    395                     else if (values[0].equals("green"))
    396                         LightColour[index] = "G";
    397                     else if (values[0].equals("white"))
    398                         LightColour[index] = "W";
    399                     if (values.length > 1)
    400                         Bearing1[index] = values[1];
    401                     if (values.length > 2)
    402                         Bearing2[index] = values[2];
    403                     if (values.length > 3)
    404                         Radius[index] = values[3];
    405                 } else {
    406                     index = 0;
    407                 }
    408                 if (index != 0)
    409                     setSectored(true);
    410                 if (key.equals("colour")) {
    411                     if (value.equals("red"))
    412                         LightColour[index] = "R";
    413                     else if (value.equals("green"))
    414                         LightColour[index] = "G";
    415                     else if (value.equals("white"))
    416                         LightColour[index] = "W";
    417                 } else if (key.equals("character")) {
    418                     LightChar[index] = value;
    419                 } else if (key.equals("group")) {
    420                     LightGroup[index] = value;
    421                 } else if (key.equals("period")) {
    422                     LightPeriod[index] = value;
    423                 } else if (key.equals("height")) {
    424                     Height[index] = value;
    425                 } else if (key.equals("range")) {
    426                     Range[index] = value;
    427                 }
    428             }
    429         }
    430         setSectorIndex(0);
    431         dlg.cbM01Sector.setSelectedIndex(0);
    432         dlg.cM01Fired.setSelected(isFired());
    433         dlg.rbM01Fired1.setSelected(!isSectored());
    434         dlg.rbM01FiredN.setSelected(isSectored());
    435         dlg.cbM01Kennung.setSelectedItem(getLightChar());
    436         dlg.tfM01Height.setText(getHeight());
    437         dlg.tfM01Range.setText(getRange());
    438         dlg.tfM01Group.setText(getLightGroup());
    439         dlg.tfM01RepeatTime.setText(getLightPeriod());
    440         dlg.cbM01Colour.setSelectedItem(getLightColour());
    441     }
    442 
    443     public void parseFogRadar(Map<String, String> k) {
    444         String str;
    445         setFog(false);
    446         setRadar(false);
    447         setRacon(false);
    448         if (k.containsKey("seamark:fog_signal")
    449                 || k.containsKey("seamark:fog_signal:category")
    450                 || k.containsKey("seamark:fog_signal:group")
    451                 || k.containsKey("seamark:fog_signal:period")) {
    452             setFog(true);
    453             if (k.containsKey("seamark:fog_signal:category")) {
    454                 str = k.get("seamark:fog_signal:category");
    455                 if (str.equals("horn"))
    456                     setFogSound(FOG_HORN);
    457                 else if (str.equals("siren"))
    458                     setFogSound(FOG_SIREN);
    459                 else if (str.equals("diaphone"))
    460                     setFogSound(FOG_DIA);
    461                 else if (str.equals("bell"))
    462                     setFogSound(FOG_BELL);
    463                 else if (str.equals("whis"))
    464                     setFogSound(FOG_WHIS);
    465                 else if (str.equals("gong"))
    466                     setFogSound(FOG_GONG);
    467                 else if (str.equals("explosive"))
    468                     setFogSound(FOG_EXPLOS);
    469                 else
    470                     setFogSound(UNKNOWN_FOG);
    471             }
    472             if (k.containsKey("seamark:fog_signal:group"))
    473                 setFogGroup(k.get("seamark:fog_signal:group"));
    474             if (k.containsKey("seamark:fog_signal:period"))
    475                 setFogPeriod(k.get("seamark:fog_signal:period"));
    476         }
    477         dlg.cM01Fog.setSelected(hasFog());
    478         dlg.cbM01Fog.setSelectedIndex(getFogSound());
    479         dlg.tfM01FogGroup.setText(getFogGroup());
    480         dlg.tfM01FogPeriod.setText(getFogPeriod());
    481 
    482         if (k.containsKey("seamark:radar_transponder")
    483                 || k.containsKey("seamark:radar_transponder:category")
    484                 || k.containsKey("seamark:radar_transponder:group")) {
    485             setRacon(true);
    486             if (k.containsKey("seamark:radar_transponder:category")) {
    487                 str = k.get("seamark:radar_transponder:category");
    488                 if (str.equals("racon"))
    489                     setRaType(RATYPE_RACON);
    490                 else if (str.equals("ramark"))
    491                     setRaType(RATYPE_RAMARK);
    492                 else if (str.equals("leading"))
    493                     setRaType(RATYPE_LEADING);
    494                 else
    495                     setRaType(UNKNOWN_RATYPE);
    496             }
    497             if (k.containsKey("seamark:radar_transponder:group"))
    498                 setRaconGroup(k.get("seamark:radar_transponder:group"));
    499         } else if (k.containsKey("seamark:radar_reflector"))
    500             setRadar(true);
    501         dlg.cM01Radar.setSelected(hasRadar());
    502         dlg.cM01Racon.setSelected(hasRacon());
    503         dlg.cbM01Racon.setSelectedIndex(getRaType());
    504         dlg.tfM01Racon.setText(getRaconGroup());
    505     }
    506 
    507     public void paintSign() {
    508 
    509         if (dlg.paintlock)
    510             return;
    511         else
    512             dlg.paintlock = true;
    513 
    514         dlg.lM01Icon.setIcon(null);
    515         dlg.lM02Icon.setIcon(null);
    516         dlg.lM03Icon.setIcon(null);
    517         dlg.lM04Icon.setIcon(null);
    518         dlg.lM05Icon.setIcon(null);
    519         dlg.lM06Icon.setIcon(null);
    520         dlg.lM01NameMark.setText("");
    521         dlg.lM01FireMark.setText("");
    522         dlg.lM01FogMark.setText("");
    523         dlg.lM01RadarMark.setText("");
    524 
    525         dlg.rbM01RegionA.setSelected(!getRegion());
    526         dlg.rbM01RegionB.setSelected(getRegion());
    527 
    528         if (isValid()) {
    529             dlg.lM01NameMark.setText(getName());
    530 
    531             dlg.bM01Save.setEnabled(true);
    532 
    533             dlg.cM01TopMark.setSelected(hasTopMark());
    534             dlg.cM01Fired.setSelected(isFired());
    535 
    536             dlg.tfM01RepeatTime.setText(getLightPeriod());
    537 
    538             dlg.tfM01Name.setText(getName());
    539             dlg.tfM01Name.setEnabled(true);
    540 
    541             if (hasRadar()) {
    542                 dlg.lM03Icon.setIcon(new ImageIcon(getClass().getResource(
    543                         "/images/Radar_Reflector_355.png")));
    544             }
    545 
    546             else if (hasRacon()) {
    547                 dlg.lM04Icon.setIcon(new ImageIcon(getClass().getResource(
    548                         "/images/Radar_Station.png")));
    549                 if (getRaType() != 0) {
    550                     String c = (String) dlg.cbM01Racon.getSelectedItem();
    551                     if ((getRaType() == RATYPE_RACON) && !getRaconGroup().isEmpty())
    552                         c += ("(" + getRaconGroup() + ")");
    553                     dlg.lM01RadarMark.setText(c);
    554                 }
    555                 dlg.cbM01Racon.setVisible(true);
    556                 if (getRaType() == RATYPE_RACON) {
    557                     dlg.lM01Racon.setVisible(true);
    558                     dlg.tfM01Racon.setVisible(true);
    559                     dlg.tfM01Racon.setEnabled(true);
    560                 } else {
    561                     dlg.lM01Racon.setVisible(false);
    562                     dlg.tfM01Racon.setVisible(false);
    563                 }
    564             } else {
    565                 dlg.cbM01Racon.setVisible(false);
    566                 dlg.lM01Racon.setVisible(false);
    567                 dlg.tfM01Racon.setVisible(false);
    568             }
    569 
    570             if (hasFog()) {
    571                 dlg.lM05Icon.setIcon(new ImageIcon(getClass().getResource(
    572                         "/images/Fog_Signal.png")));
    573                 if (getFogSound() != 0) {
    574                     String c = (String) dlg.cbM01Fog.getSelectedItem();
    575                     if (!getFogGroup().isEmpty())
    576                         c += ("(" + getFogGroup() + ")");
    577                     if (!getFogPeriod().isEmpty())
    578                         c += (" " + getFogPeriod() + "s");
    579                     dlg.lM01FogMark.setText(c);
    580                 }
    581                 dlg.cbM01Fog.setVisible(true);
    582                 if (getFogSound() == 0) {
    583                     dlg.lM01FogGroup.setVisible(false);
    584                     dlg.tfM01FogGroup.setVisible(false);
    585                     dlg.lM01FogPeriod.setVisible(false);
    586                     dlg.tfM01FogPeriod.setVisible(false);
    587                 } else {
    588                     dlg.lM01FogGroup.setVisible(true);
    589                     dlg.tfM01FogGroup.setVisible(true);
    590                     dlg.lM01FogPeriod.setVisible(true);
    591                     dlg.tfM01FogPeriod.setVisible(true);
    592                 }
    593             } else {
    594                 dlg.cbM01Fog.setVisible(false);
    595                 dlg.lM01FogGroup.setVisible(false);
    596                 dlg.tfM01FogGroup.setVisible(false);
    597                 dlg.lM01FogPeriod.setVisible(false);
    598                 dlg.tfM01FogPeriod.setVisible(false);
    599             }
    600 
    601             if (isFired()) {
    602                 String lp, c;
    603                 String tmp = null;
    604                 int i1;
    605 
    606                 String col = getLightColour();
    607                 if (col.equals("W")) {
    608                     dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
    609                             "/images/Light_White_120.png")));
    610                     dlg.cbM01Colour.setSelectedIndex(WHITE_LIGHT);
    611                 } else if (col.equals("R")) {
    612                     dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
    613                             "/images/Light_Red_120.png")));
    614                     dlg.cbM01Colour.setSelectedIndex(RED_LIGHT);
    615                 } else if (col.equals("G")) {
    616                     dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
    617                             "/images/Light_Green_120.png")));
    618                     dlg.cbM01Colour.setSelectedIndex(GREEN_LIGHT);
    619                 } else {
    620                     dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
    621                             "/images/Light_Magenta_120.png")));
    622                     dlg.cbM01Colour.setSelectedIndex(UNKNOWN_COLOUR);
    623                 }
    624 
    625                 c = getLightChar();
    626                 if (c.contains("+")) {
    627                     i1 = c.indexOf("+");
    628                     tmp = c.substring(i1, c.length());
    629                     c = c.substring(0, i1);
    630                     if (!getLightGroup().isEmpty()) {
    631                         c = c + "(" + getLightGroup() + ")";
    632                     }
    633                     if (tmp != null)
    634                         c = c + tmp;
    635                 }
    636                 dlg.cbM01Kennung.setSelectedItem(c);
    637                 if ((dlg.cbM01Kennung.getSelectedIndex() != 0)
    638                         && (!getLightGroup().isEmpty())
    639                         || (((String) dlg.cbM01Kennung.getSelectedItem()).contains("("))
    640                         && !(((String) dlg.cbM01Kennung.getSelectedItem()).contains("+"))) {
    641                     c = c + "(" + getLightGroup() + ")";
    642                     dlg.cbM01Kennung.setSelectedItem(c);
    643                 }
    644                 c = c + " " + getLightColour();
    645                 lp = getLightPeriod();
    646                 if (!lp.isEmpty())
    647                     c = c + " " + lp + "s";
    648                 dlg.lM01FireMark.setText(c);
    649                 dlg.cM01Fired.setVisible(true);
    650                 dlg.lM01Kennung.setVisible(true);
    651                 dlg.cbM01Kennung.setVisible(true);
    652                 if (((String) dlg.cbM01Kennung.getSelectedItem()).contains("(")) {
    653                     dlg.tfM01Group.setVisible(false);
    654                     dlg.lM01Group.setVisible(false);
    655                 } else {
    656                     dlg.lM01Group.setVisible(true);
    657                     dlg.tfM01Group.setVisible(true);
    658                 }
    659                 dlg.tfM01Group.setText(getLightGroup());
    660                 dlg.lM01RepeatTime.setVisible(true);
    661                 dlg.tfM01RepeatTime.setVisible(true);
    662                 if (isSectored()) {
    663                     dlg.rbM01Fired1.setSelected(false);
    664                     dlg.rbM01FiredN.setSelected(true);
    665                     if ((getSectorIndex() != 0) && (!LightChar[0].isEmpty()))
    666                         dlg.cbM01Kennung.setEnabled(false);
    667                     else
    668                         dlg.cbM01Kennung.setEnabled(true);
    669                     dlg.cbM01Kennung.setSelectedItem(getLightChar());
    670                     if ((getSectorIndex() != 0) && (!LightGroup[0].isEmpty()))
    671                         dlg.tfM01Group.setEnabled(false);
    672                     else
    673                         dlg.tfM01Group.setEnabled(true);
    674                     dlg.tfM01Group.setText(getLightGroup());
    675                     if ((getSectorIndex() != 0) && (!LightPeriod[0].isEmpty()))
    676                         dlg.tfM01RepeatTime.setEnabled(false);
    677                     else
    678                         dlg.tfM01RepeatTime.setEnabled(true);
    679                     dlg.tfM01RepeatTime.setText(getLightPeriod());
    680                     if ((getSectorIndex() != 0) && (!Height[0].isEmpty()))
    681                         dlg.tfM01Height.setEnabled(false);
    682                     else
    683                         dlg.tfM01Height.setEnabled(true);
    684                     dlg.tfM01Height.setText(getHeight());
    685                     if ((getSectorIndex() != 0) && (!Range[0].isEmpty()))
    686                         dlg.tfM01Range.setEnabled(false);
    687                     else
    688                         dlg.tfM01Range.setEnabled(true);
    689                     dlg.tfM01Range.setText(getRange());
    690                     dlg.lM01Sector.setVisible(true);
    691                     dlg.cbM01Sector.setVisible(true);
    692                     if (getSectorIndex() == 0) {
    693                         dlg.lM01Colour.setVisible(false);
    694                         dlg.cbM01Colour.setVisible(false);
    695                         dlg.lM01Bearing.setVisible(false);
    696                         dlg.tfM01Bearing.setVisible(false);
    697                         dlg.tfM02Bearing.setVisible(false);
    698                         dlg.tfM01Radius.setVisible(false);
    699                     } else {
    700                         dlg.lM01Colour.setVisible(true);
    701                         dlg.cbM01Colour.setVisible(true);
    702                         dlg.lM01Bearing.setVisible(true);
    703                         dlg.tfM01Bearing.setVisible(true);
    704                         dlg.tfM01Bearing.setText(getBearing1());
    705                         dlg.tfM02Bearing.setVisible(true);
    706                         dlg.tfM02Bearing.setText(getBearing2());
    707                         dlg.tfM01Radius.setVisible(true);
    708                         dlg.tfM01Radius.setText(getRadius());
    709                     }
    710                 } else {
    711                     dlg.rbM01FiredN.setSelected(false);
    712                     dlg.rbM01Fired1.setSelected(true);
    713                     dlg.cbM01Kennung.setEnabled(true);
    714                     dlg.tfM01Group.setEnabled(true);
    715                     dlg.tfM01RepeatTime.setEnabled(true);
    716                     dlg.tfM01Height.setEnabled(true);
    717                     dlg.tfM01Range.setEnabled(true);
    718                     dlg.lM01Colour.setVisible(true);
    719                     dlg.cbM01Colour.setVisible(true);
    720                     dlg.lM01Sector.setVisible(false);
    721                     dlg.cbM01Sector.setVisible(false);
    722                     dlg.lM01Bearing.setVisible(false);
    723                     dlg.tfM01Bearing.setVisible(false);
    724                     dlg.tfM02Bearing.setVisible(false);
    725                     dlg.tfM01Radius.setVisible(false);
    726                 }
    727             } else {
    728                 dlg.lM01FireMark.setText("");
    729                 dlg.rbM01Fired1.setVisible(false);
    730                 dlg.rbM01FiredN.setVisible(false);
    731                 dlg.cbM01Kennung.setVisible(false);
    732                 dlg.lM01Kennung.setVisible(false);
    733                 dlg.tfM01Height.setVisible(false);
    734                 dlg.lM01Height.setVisible(false);
    735                 dlg.tfM01Range.setVisible(false);
    736                 dlg.lM01Range.setVisible(false);
    737                 dlg.cbM01Colour.setVisible(false);
    738                 dlg.lM01Colour.setVisible(false);
    739                 dlg.cbM01Sector.setVisible(false);
    740                 dlg.lM01Sector.setVisible(false);
    741                 dlg.tfM01Group.setVisible(false);
    742                 dlg.lM01Group.setVisible(false);
    743                 dlg.tfM01RepeatTime.setVisible(false);
    744                 dlg.lM01RepeatTime.setVisible(false);
    745                 dlg.tfM01Bearing.setVisible(false);
    746                 dlg.lM01Bearing.setVisible(false);
    747                 dlg.tfM02Bearing.setVisible(false);
    748                 dlg.tfM01Radius.setVisible(false);
    749             }
    750         } else {
    751             dlg.bM01Save.setEnabled(false);
    752             dlg.tfM01Name.setEnabled(false);
    753             dlg.cM01TopMark.setVisible(false);
    754             dlg.cbM01TopMark.setVisible(false);
    755             dlg.cM01Radar.setVisible(false);
    756             dlg.cM01Racon.setVisible(false);
    757             dlg.cbM01Racon.setVisible(false);
    758             dlg.tfM01Racon.setVisible(false);
    759             dlg.lM01Racon.setVisible(false);
    760             dlg.cM01Fog.setVisible(false);
    761             dlg.cbM01Fog.setVisible(false);
    762             dlg.tfM01FogGroup.setVisible(false);
    763             dlg.lM01FogGroup.setVisible(false);
    764             dlg.tfM01FogPeriod.setVisible(false);
    765             dlg.lM01FogPeriod.setVisible(false);
    766             dlg.cM01Fired.setVisible(false);
    767             dlg.rbM01Fired1.setVisible(false);
    768             dlg.rbM01FiredN.setVisible(false);
    769             dlg.cbM01Kennung.setVisible(false);
    770             dlg.lM01Kennung.setVisible(false);
    771             dlg.tfM01Height.setVisible(false);
    772             dlg.lM01Height.setVisible(false);
    773             dlg.tfM01Range.setVisible(false);
    774             dlg.lM01Range.setVisible(false);
    775             dlg.cbM01Colour.setVisible(false);
    776             dlg.lM01Colour.setVisible(false);
    777             dlg.cbM01Sector.setVisible(false);
    778             dlg.lM01Sector.setVisible(false);
    779             dlg.tfM01Group.setVisible(false);
    780             dlg.lM01Group.setVisible(false);
    781             dlg.tfM01RepeatTime.setVisible(false);
    782             dlg.lM01RepeatTime.setVisible(false);
    783             dlg.tfM01Bearing.setVisible(false);
    784             dlg.lM01Bearing.setVisible(false);
    785             dlg.tfM02Bearing.setVisible(false);
    786             dlg.tfM01Radius.setVisible(false);
    787         }
    788         dlg.paintlock = false;
    789     }
    790 
    791     public void saveSign(String type) {
    792         delSeaMarkKeys(Node);
    793 
    794         String str = dlg.tfM01Name.getText();
    795         if (!str.isEmpty())
    796             Main.main.undoRedo.add(new ChangePropertyCommand(Node, "seamark:name",
    797                     str));
    798         Main.main.undoRedo
    799                 .add(new ChangePropertyCommand(Node, "seamark:type", type));
    800     }
    801 
    802     protected void saveLightData() {
    803         String colour;
    804         if (dlg.cM01Fired.isSelected()) {
    805             if (!(colour = LightColour[0]).isEmpty())
    806                 if (colour.equals("R")) {
    807                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    808                             "seamark:light:colour", "red"));
    809                 } else if (colour.equals("G")) {
    810                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    811                             "seamark:light:colour", "green"));
    812                 } else if (colour.equals("W")) {
    813                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    814                             "seamark:light:colour", "white"));
    815                 }
    816 
    817             if (!LightPeriod[0].isEmpty())
    818                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    819                         "seamark:light:period", LightPeriod[0]));
    820 
    821             if (!LightChar[0].isEmpty())
    822                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    823                         "seamark:light:character", LightChar[0]));
    824 
    825             if (!LightGroup[0].isEmpty())
    826                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    827                         "seamark:light:group", LightGroup[0]));
    828 
    829             if (!Height[0].isEmpty())
    830                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    831                         "seamark:light:height", Height[0]));
    832 
    833             if (!Range[0].isEmpty())
    834                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    835                         "seamark:light:range", Range[0]));
    836 
    837             for (int i = 1; i < 10; i++) {
    838                 if ((colour = LightColour[i]) != null)
    839                     if (colour.equals("R")) {
    840                         Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    841                                 "seamark:light:" + i + ":colour", "red"));
    842                         if ((Bearing1[i] != null) && (Bearing2[i] != null)
    843                                 && (Radius[i] != null))
    844                             Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    845                                     "seamark:light:" + i, "red:" + Bearing1[i] + ":"
    846                                             + Bearing2[i] + ":" + Radius[i]));
    847                     } else if (colour.equals("G")) {
    848                         Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    849                                 "seamark:light:" + i + ":colour", "green"));
    850                         if ((Bearing1[i] != null) && (Bearing2[i] != null)
    851                                 && (Radius[i] != null))
    852                             Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    853                                     "seamark:light:" + i, "green:" + Bearing1[i] + ":"
    854                                             + Bearing2[i] + ":" + Radius[i]));
    855                     } else if (colour.equals("W")) {
    856                         Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    857                                 "seamark:light:" + i + ":colour", "white"));
    858                         if ((Bearing1[i] != null) && (Bearing2[i] != null)
    859                                 && (Radius[i] != null))
    860                             Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    861                                     "seamark:light:" + i, "white:" + Bearing1[i] + ":"
    862                                             + Bearing2[i] + ":" + Radius[i]));
    863                     }
    864 
    865                 if (LightPeriod[i] != null)
    866                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    867                             "seamark:light:" + i + ":period", LightPeriod[i]));
    868 
    869                 if (LightChar[i] != null)
    870                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    871                             "seamark:light:" + i + ":character", LightChar[i]));
    872 
    873                 if (LightGroup[i] != null)
    874                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    875                             "seamark:light:" + i + ":group", LightGroup[i]));
    876 
    877                 if (Height[i] != null)
    878                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    879                             "seamark:light:" + i + ":height", Height[i]));
    880 
    881                 if (Range[i] != null)
    882                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    883                             "seamark:light:" + i + ":range", Range[i]));
    884 
    885                 if (Bearing1[i] != null)
    886                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    887                             "seamark:light:" + i + ":sector_start", Bearing1[i]));
    888 
    889                 if (Bearing2[i] != null)
    890                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    891                             "seamark:light:" + i + ":sector_end", Bearing2[i]));
    892             }
    893         }
    894     }
    895 
    896     protected void saveTopMarkData(String shape, String colour) {
    897         if (dlg.cM01TopMark.isSelected()) {
    898             Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    899                     "seamark:topmark:shape", shape));
    900             Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    901                     "seamark:topmark:colour", colour));
    902         }
    903     }
    904 
    905     protected void saveRadarFogData() {
    906         if (hasRadar()) {
    907             Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    908                     "seamark:radar_reflector", "yes"));
    909         }
    910         if (hasRacon()) {
    911             switch (RaType) {
    912             case RATYPE_RACON:
    913                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    914                         "seamark:radar_transponder:category", "racon"));
    915                 if (!getRaconGroup().isEmpty())
    916                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    917                             "seamark:radar_transponder:group", getRaconGroup()));
    918                 break;
    919             case RATYPE_RAMARK:
    920                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    921                         "seamark:radar_transponder:category", "ramark"));
    922                 break;
    923             case RATYPE_LEADING:
    924                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    925                         "seamark:radar_transponder:category", "leading"));
    926                 break;
    927             default:
    928                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    929                         "seamark:radar_transponder", "yes"));
    930             }
    931         }
    932         if (hasFog()) {
    933             if (getFogSound() == 0) {
    934                 Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    935                         "seamark:fog_signal", "yes"));
    936             } else {
    937                 switch (getFogSound()) {
    938                 case FOG_HORN:
    939                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    940                             "seamark:fog_signal:category", "horn"));
    941                     break;
    942                 case FOG_SIREN:
    943                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    944                             "seamark:fog_signal:category", "siren"));
    945                     break;
    946                 case FOG_DIA:
    947                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    948                             "seamark:fog_signal:category", "diaphone"));
    949                     break;
    950                 case FOG_BELL:
    951                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    952                             "seamark:fog_signal:category", "bell"));
    953                     break;
    954                 case FOG_WHIS:
    955                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    956                             "seamark:fog_signal:category", "whistle"));
    957                     break;
    958                 case FOG_GONG:
    959                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    960                             "seamark:fog_signal:category", "gong"));
    961                     break;
    962                 case FOG_EXPLOS:
    963                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    964                             "seamark:fog_signal:category", "explosive"));
    965                     break;
    966                 }
    967                 if (!getFogGroup().isEmpty())
    968                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    969                             "seamark:fog_signal:group", getFogGroup()));
    970                 if (!getFogPeriod().isEmpty())
    971                     Main.main.undoRedo.add(new ChangePropertyCommand(Node,
    972                             "seamark:fog_signal:period", getFogPeriod()));
    973             }
    974         }
    975     }
    976 
    977     public void refreshStyles() {
    978     }
    979 
    980     public void refreshLights() {
    981         dlg.cbM01Kennung.removeAllItems();
    982         dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
    983         dlg.cbM01Kennung.addItem("Fl"); //$NON-NLS-1$
    984         dlg.cbM01Kennung.addItem("LFl"); //$NON-NLS-1$
    985         dlg.cbM01Kennung.addItem("Iso"); //$NON-NLS-1$
    986         dlg.cbM01Kennung.addItem("F"); //$NON-NLS-1$
    987         dlg.cbM01Kennung.addItem("FFl"); //$NON-NLS-1$
    988         dlg.cbM01Kennung.addItem("Oc"); //$NON-NLS-1$
    989         dlg.cbM01Kennung.addItem("Q"); //$NON-NLS-1$
    990         dlg.cbM01Kennung.addItem("IQ"); //$NON-NLS-1$
    991         dlg.cbM01Kennung.addItem("VQ"); //$NON-NLS-1$
    992         dlg.cbM01Kennung.addItem("IVQ"); //$NON-NLS-1$
    993         dlg.cbM01Kennung.addItem("UQ"); //$NON-NLS-1$
    994         dlg.cbM01Kennung.addItem("IUQ"); //$NON-NLS-1$
    995         dlg.cbM01Kennung.addItem("Mo"); //$NON-NLS-1$
    996         dlg.cbM01Kennung.setSelectedIndex(0);
    997     }
    998 
    999     public void resetMask() {
    1000         setRegion(Main.pref.get("tomsplugin.IALA").equals("B"));
    1001 
    1002         dlg.lM01Icon.setIcon(null);
    1003         dlg.lM02Icon.setIcon(null);
    1004         dlg.lM03Icon.setIcon(null);
    1005         dlg.lM04Icon.setIcon(null);
    1006         dlg.lM05Icon.setIcon(null);
    1007         dlg.lM06Icon.setIcon(null);
    1008 
    1009         dlg.rbM01RegionA.setEnabled(false);
    1010         dlg.rbM01RegionB.setEnabled(false);
    1011         dlg.lM01FireMark.setText("");
    1012         dlg.cbM01CatOfMark.setVisible(false);
    1013         dlg.lM01CatOfMark.setVisible(false);
    1014         setBuoyIndex(0);
    1015         dlg.cbM01StyleOfMark.setVisible(false);
    1016         dlg.lM01StyleOfMark.setVisible(false);
    1017         setStyleIndex(0);
    1018         dlg.tfM01Name.setText("");
    1019         dlg.tfM01Name.setEnabled(false);
    1020         setName("");
    1021         dlg.cM01TopMark.setSelected(false);
    1022         dlg.cM01TopMark.setVisible(false);
    1023         dlg.cbM01TopMark.setVisible(false);
    1024         setTopMark(false);
    1025         dlg.cM01Radar.setSelected(false);
    1026         dlg.cM01Radar.setVisible(false);
    1027         setRadar(false);
    1028         dlg.cM01Racon.setSelected(false);
    1029         dlg.cM01Racon.setVisible(false);
    1030         dlg.cbM01Racon.setVisible(false);
    1031         dlg.tfM01Racon.setText("");
    1032         dlg.tfM01Racon.setVisible(false);
    1033         dlg.lM01Racon.setVisible(false);
    1034         setRacon(false);
    1035         setRaType(0);
    1036         dlg.cM01Fog.setSelected(false);
    1037         dlg.cM01Fog.setVisible(false);
    1038         dlg.cbM01Fog.setVisible(false);
    1039         setFogSound(0);
    1040         dlg.tfM01FogGroup.setText("");
    1041         dlg.tfM01FogGroup.setVisible(false);
    1042         dlg.lM01FogGroup.setVisible(false);
    1043         dlg.tfM01FogPeriod.setText("");
    1044         dlg.tfM01FogPeriod.setVisible(false);
    1045         dlg.lM01FogPeriod.setVisible(false);
    1046         setFog(false);
    1047         dlg.cM01Fired.setSelected(false);
    1048         dlg.cM01Fired.setVisible(false);
    1049         setFired(false);
    1050         dlg.rbM01Fired1.setVisible(false);
    1051         dlg.rbM01Fired1.setSelected(true);
    1052         dlg.rbM01FiredN.setVisible(false);
    1053         dlg.rbM01FiredN.setSelected(false);
    1054         setSectored(false);
    1055         dlg.cbM01Kennung.removeAllItems();
    1056         dlg.cbM01Kennung.setVisible(false);
    1057         dlg.lM01Kennung.setVisible(false);
    1058         setLightChar("");
    1059         dlg.tfM01Height.setText("");
    1060         dlg.tfM01Height.setVisible(false);
    1061         dlg.lM01Height.setVisible(false);
    1062         setHeight("");
    1063         dlg.tfM01Range.setText("");
    1064         dlg.tfM01Range.setVisible(false);
    1065         dlg.lM01Range.setVisible(false);
    1066         setRange("");
    1067         dlg.cbM01Colour.setVisible(false);
    1068         dlg.lM01Colour.setVisible(false);
    1069         setLightColour("");
    1070         dlg.cbM01Sector.setVisible(false);
    1071         dlg.lM01Sector.setVisible(false);
    1072         setSectorIndex(0);
    1073         dlg.tfM01Group.setText("");
    1074         dlg.tfM01Group.setVisible(false);
    1075         dlg.lM01Group.setVisible(false);
    1076         setLightGroup("");
    1077         dlg.tfM01RepeatTime.setText("");
    1078         dlg.tfM01RepeatTime.setVisible(false);
    1079         dlg.lM01RepeatTime.setVisible(false);
    1080         setLightPeriod("");
    1081         dlg.tfM01Bearing.setText("");
    1082         dlg.tfM01Bearing.setVisible(false);
    1083         dlg.lM01Bearing.setVisible(false);
    1084         setBearing1("");
    1085         dlg.tfM02Bearing.setText("");
    1086         dlg.tfM02Bearing.setVisible(false);
    1087         setBearing2("");
    1088         dlg.tfM01Radius.setText("");
    1089         dlg.tfM01Radius.setVisible(false);
    1090         setRadius("");
    1091 
    1092         dlg.bM01Save.setEnabled(false);
    1093     }
     174        private int SectorIndex = 0;
     175
     176        public int getSectorIndex() {
     177                return SectorIndex;
     178        }
     179
     180        public void setSectorIndex(int sector) {
     181                SectorIndex = sector;
     182        }
     183
     184        private String[] LightChar = new String[10];
     185
     186        public String getLightChar() {
     187                if (LightChar[SectorIndex] == null)
     188                        return (LightChar[0]);
     189                return LightChar[SectorIndex];
     190        }
     191
     192        public void setLightChar(String lightChar) {
     193                if (SectorIndex == 0) {
     194                        LightChar = new String[10];
     195                        LightChar[0] = lightChar;
     196                } else if (LightChar[0].isEmpty())
     197                        LightChar[SectorIndex] = lightChar;
     198        }
     199
     200        private String[] LightColour = new String[10];
     201
     202        public String getLightColour() {
     203                if (LightColour[SectorIndex] == null)
     204                        return (LightColour[0]);
     205                return LightColour[SectorIndex];
     206        }
     207
     208        public void setLightColour(String lightColour) {
     209                LightColour[SectorIndex] = lightColour;
     210        }
     211
     212        private String[] LightGroup = new String[10];
     213
     214        public String getLightGroup() {
     215                if (LightGroup[SectorIndex] == null)
     216                        return (LightGroup[0]);
     217                return LightGroup[SectorIndex];
     218        }
     219
     220        public void setLightGroup(String lightGroup) {
     221                if (SectorIndex == 0)
     222                        LightGroup = new String[10];
     223                LightGroup[SectorIndex] = lightGroup;
     224        }
     225
     226        protected void setLightGroup(Map<String, String> k) {
     227                String s = "";
     228                if (k.containsKey("seamark:light:group")) {
     229                        s = k.get("seamark:light:group");
     230                        setLightGroup(s);
     231                }
     232        }
     233
     234        private String[] Height = new String[10];
     235
     236        public String getHeight() {
     237                if (Height[SectorIndex] == null)
     238                        return (Height[0]);
     239                return Height[SectorIndex];
     240        }
     241
     242        public void setHeight(String height) {
     243                if (SectorIndex == 0)
     244                        Height = new String[10];
     245                Height[SectorIndex] = height;
     246        }
     247
     248        private String[] Range = new String[10];
     249
     250        public String getRange() {
     251                if (Range[SectorIndex] == null)
     252                        return (Range[0]);
     253                return Range[SectorIndex];
     254        }
     255
     256        public void setRange(String range) {
     257                if (SectorIndex == 0)
     258                        Range = new String[10];
     259                Range[SectorIndex] = range;
     260        }
     261
     262        private String[] Bearing1 = new String[10];
     263
     264        public String getBearing1() {
     265                if (Bearing1[SectorIndex] == null)
     266                        return (Bearing1[0]);
     267                return Bearing1[SectorIndex];
     268        }
     269
     270        public void setBearing1(String bearing) {
     271                if (SectorIndex == 0)
     272                        Bearing1 = new String[10];
     273                Bearing1[SectorIndex] = bearing;
     274        }
     275
     276        private String[] Bearing2 = new String[10];
     277
     278        public String getBearing2() {
     279                if (Bearing2[SectorIndex] == null)
     280                        return (Bearing2[0]);
     281                return Bearing2[SectorIndex];
     282        }
     283
     284        public void setBearing2(String bearing) {
     285                if (SectorIndex == 0)
     286                        Bearing2 = new String[10];
     287                Bearing2[SectorIndex] = bearing;
     288        }
     289
     290        private String[] Radius = new String[10];
     291
     292        public String getRadius() {
     293                if (Radius[SectorIndex] == null)
     294                        return (Radius[0]);
     295                return Radius[SectorIndex];
     296        }
     297
     298        public void setRadius(String radius) {
     299                if (SectorIndex == 0)
     300                        Radius = new String[10];
     301                Radius[SectorIndex] = radius;
     302        }
     303
     304        private String[] LightPeriod = new String[10];
     305
     306        public String getLightPeriod() {
     307                if (LightPeriod[SectorIndex] == null)
     308                        return (LightPeriod[0]);
     309                return LightPeriod[SectorIndex];
     310        }
     311
     312        public void setLightPeriod(String lightPeriod) {
     313                String regex = "^[\\d\\s.]+$";
     314
     315                if (!lightPeriod.isEmpty()) {
     316
     317                        Pattern pat = Pattern.compile(regex);
     318                        Matcher matcher = pat.matcher(lightPeriod);
     319
     320                        if (matcher.find()) {
     321                                setErrMsg(null);
     322                        } else {
     323                                setErrMsg("Must be a number");
     324                                lightPeriod = "";
     325                                dlg.tfM01RepeatTime.requestFocus();
     326                        }
     327                }
     328                if (SectorIndex == 0)
     329                        LightPeriod = new String[10];
     330                LightPeriod[SectorIndex] = lightPeriod;
     331        }
     332
     333        private Node Node = null;
     334
     335        public Node getNode() {
     336                return Node;
     337        }
     338
     339        public void setNode(Node node) {
     340                Node = node;
     341        }
     342
     343        private boolean TopMark = false;
     344
     345        public boolean hasTopMark() {
     346                return TopMark;
     347        }
     348
     349        public void setTopMark(boolean topMark) {
     350                TopMark = topMark;
     351                /*
     352                * if (dlg.cM01TopMark == null) { return; }
     353                */
     354                dlg.cM01TopMark.setSelected(topMark);
     355        }
     356
     357        protected SmpDialogAction dlg = null; // hier wird der Dialog referenziert
     358
     359        public SmpDialogAction getDlg() {
     360                return dlg;
     361        }
     362
     363        public void setDlg(SmpDialogAction dlg) {
     364                this.dlg = dlg;
     365        }
     366
     367        protected Buoy(SmpDialogAction dia) {
     368                dlg = dia;
     369        }
     370
     371        public boolean isValid() {
     372                return false;
     373        }
     374
     375        public void parseLights(Map<String, String> k) {
     376                setFired(false);
     377                setSectored(false);
     378                Iterator it = k.entrySet().iterator();
     379                while (it.hasNext()) {
     380                        Map.Entry entry = (Map.Entry) it.next();
     381                        String key = (String) entry.getKey();
     382                        String value = ((String) entry.getValue()).trim();
     383                        if (key.contains("seamark:light:")) {
     384                                setFired(true);
     385                                int index = 0;
     386                                key = key.substring(14);
     387                                if (key.matches("^\\d:.*")) {
     388                                        index = key.charAt(0) - '0';
     389                                        key = key.substring(2);
     390                                } else if (key.matches("^\\d$")) {
     391                                        index = key.charAt(0) - '0';
     392                                        String values[] = value.split(":");
     393                                        if (values[0].equals("red"))
     394                                                LightColour[index] = "R";
     395                                        else if (values[0].equals("green"))
     396                                                LightColour[index] = "G";
     397                                        else if (values[0].equals("white"))
     398                                                LightColour[index] = "W";
     399                                        if (values.length > 1)
     400                                                Bearing1[index] = values[1];
     401                                        if (values.length > 2)
     402                                                Bearing2[index] = values[2];
     403                                        if (values.length > 3)
     404                                                Radius[index] = values[3];
     405                                } else {
     406                                        index = 0;
     407                                }
     408                                if (index != 0)
     409                                        setSectored(true);
     410                                if (key.equals("colour")) {
     411                                        if (value.equals("red"))
     412                                                LightColour[index] = "R";
     413                                        else if (value.equals("green"))
     414                                                LightColour[index] = "G";
     415                                        else if (value.equals("white"))
     416                                                LightColour[index] = "W";
     417                                } else if (key.equals("character")) {
     418                                        LightChar[index] = value;
     419                                } else if (key.equals("group")) {
     420                                        LightGroup[index] = value;
     421                                } else if (key.equals("period")) {
     422                                        LightPeriod[index] = value;
     423                                } else if (key.equals("height")) {
     424                                        Height[index] = value;
     425                                } else if (key.equals("range")) {
     426                                        Range[index] = value;
     427                                }
     428                        }
     429                }
     430                setSectorIndex(0);
     431                dlg.cbM01Sector.setSelectedIndex(0);
     432                dlg.cM01Fired.setSelected(isFired());
     433                dlg.rbM01Fired1.setSelected(!isSectored());
     434                dlg.rbM01FiredN.setSelected(isSectored());
     435                dlg.cbM01Kennung.setSelectedItem(getLightChar());
     436                dlg.tfM01Height.setText(getHeight());
     437                dlg.tfM01Range.setText(getRange());
     438                dlg.tfM01Group.setText(getLightGroup());
     439                dlg.tfM01RepeatTime.setText(getLightPeriod());
     440                dlg.cbM01Colour.setSelectedItem(getLightColour());
     441        }
     442
     443        public void parseFogRadar(Map<String, String> k) {
     444                String str;
     445                setFog(false);
     446                setRadar(false);
     447                setRacon(false);
     448                if (k.containsKey("seamark:fog_signal")
     449                                || k.containsKey("seamark:fog_signal:category")
     450                                || k.containsKey("seamark:fog_signal:group")
     451                                || k.containsKey("seamark:fog_signal:period")) {
     452                        setFog(true);
     453                        if (k.containsKey("seamark:fog_signal:category")) {
     454                                str = k.get("seamark:fog_signal:category");
     455                                if (str.equals("horn"))
     456                                        setFogSound(FOG_HORN);
     457                                else if (str.equals("siren"))
     458                                        setFogSound(FOG_SIREN);
     459                                else if (str.equals("diaphone"))
     460                                        setFogSound(FOG_DIA);
     461                                else if (str.equals("bell"))
     462                                        setFogSound(FOG_BELL);
     463                                else if (str.equals("whis"))
     464                                        setFogSound(FOG_WHIS);
     465                                else if (str.equals("gong"))
     466                                        setFogSound(FOG_GONG);
     467                                else if (str.equals("explosive"))
     468                                        setFogSound(FOG_EXPLOS);
     469                                else
     470                                        setFogSound(UNKNOWN_FOG);
     471                        }
     472                        if (k.containsKey("seamark:fog_signal:group"))
     473                                setFogGroup(k.get("seamark:fog_signal:group"));
     474                        if (k.containsKey("seamark:fog_signal:period"))
     475                                setFogPeriod(k.get("seamark:fog_signal:period"));
     476                }
     477                dlg.cM01Fog.setSelected(hasFog());
     478                dlg.cbM01Fog.setSelectedIndex(getFogSound());
     479                dlg.tfM01FogGroup.setText(getFogGroup());
     480                dlg.tfM01FogPeriod.setText(getFogPeriod());
     481
     482                if (k.containsKey("seamark:radar_transponder")
     483                                || k.containsKey("seamark:radar_transponder:category")
     484                                || k.containsKey("seamark:radar_transponder:group")) {
     485                        setRacon(true);
     486                        if (k.containsKey("seamark:radar_transponder:category")) {
     487                                str = k.get("seamark:radar_transponder:category");
     488                                if (str.equals("racon"))
     489                                        setRaType(RATYPE_RACON);
     490                                else if (str.equals("ramark"))
     491                                        setRaType(RATYPE_RAMARK);
     492                                else if (str.equals("leading"))
     493                                        setRaType(RATYPE_LEADING);
     494                                else
     495                                        setRaType(UNKNOWN_RATYPE);
     496                        }
     497                        if (k.containsKey("seamark:radar_transponder:group"))
     498                                setRaconGroup(k.get("seamark:radar_transponder:group"));
     499                } else if (k.containsKey("seamark:radar_reflector"))
     500                        setRadar(true);
     501                dlg.cM01Radar.setSelected(hasRadar());
     502                dlg.cM01Racon.setSelected(hasRacon());
     503                dlg.cbM01Racon.setSelectedIndex(getRaType());
     504                dlg.tfM01Racon.setText(getRaconGroup());
     505        }
     506
     507        public void paintSign() {
     508
     509                if (dlg.paintlock)
     510                        return;
     511                else
     512                        dlg.paintlock = true;
     513
     514                dlg.lM01Icon.setIcon(null);
     515                dlg.lM02Icon.setIcon(null);
     516                dlg.lM03Icon.setIcon(null);
     517                dlg.lM04Icon.setIcon(null);
     518                dlg.lM05Icon.setIcon(null);
     519                dlg.lM06Icon.setIcon(null);
     520                dlg.lM01NameMark.setText("");
     521                dlg.lM01FireMark.setText("");
     522                dlg.lM01FogMark.setText("");
     523                dlg.lM01RadarMark.setText("");
     524
     525                dlg.rbM01RegionA.setSelected(!getRegion());
     526                dlg.rbM01RegionB.setSelected(getRegion());
     527
     528                if (isValid()) {
     529                        dlg.lM01NameMark.setText(getName());
     530
     531                        dlg.bM01Save.setEnabled(true);
     532
     533                        dlg.cM01TopMark.setSelected(hasTopMark());
     534                        dlg.cM01Fired.setSelected(isFired());
     535
     536                        dlg.tfM01RepeatTime.setText(getLightPeriod());
     537
     538                        dlg.tfM01Name.setText(getName());
     539                        dlg.tfM01Name.setEnabled(true);
     540
     541                        if (hasRadar()) {
     542                                dlg.lM03Icon.setIcon(new ImageIcon(getClass().getResource(
     543                                                "/images/Radar_Reflector_355.png")));
     544                        }
     545
     546                        else if (hasRacon()) {
     547                                dlg.lM04Icon.setIcon(new ImageIcon(getClass().getResource(
     548                                                "/images/Radar_Station.png")));
     549                                if (getRaType() != 0) {
     550                                        String c = (String) dlg.cbM01Racon.getSelectedItem();
     551                                        if ((getRaType() == RATYPE_RACON) && !getRaconGroup().isEmpty())
     552                                                c += ("(" + getRaconGroup() + ")");
     553                                        dlg.lM01RadarMark.setText(c);
     554                                }
     555                                dlg.cbM01Racon.setVisible(true);
     556                                if (getRaType() == RATYPE_RACON) {
     557                                        dlg.lM01Racon.setVisible(true);
     558                                        dlg.tfM01Racon.setVisible(true);
     559                                        dlg.tfM01Racon.setEnabled(true);
     560                                } else {
     561                                        dlg.lM01Racon.setVisible(false);
     562                                        dlg.tfM01Racon.setVisible(false);
     563                                }
     564                        } else {
     565                                dlg.cbM01Racon.setVisible(false);
     566                                dlg.lM01Racon.setVisible(false);
     567                                dlg.tfM01Racon.setVisible(false);
     568                        }
     569
     570                        if (hasFog()) {
     571                                dlg.lM05Icon.setIcon(new ImageIcon(getClass().getResource(
     572                                                "/images/Fog_Signal.png")));
     573                                if (getFogSound() != 0) {
     574                                        String c = (String) dlg.cbM01Fog.getSelectedItem();
     575                                        if (!getFogGroup().isEmpty())
     576                                                c += ("(" + getFogGroup() + ")");
     577                                        if (!getFogPeriod().isEmpty())
     578                                                c += (" " + getFogPeriod() + "s");
     579                                        dlg.lM01FogMark.setText(c);
     580                                }
     581                                dlg.cbM01Fog.setVisible(true);
     582                                if (getFogSound() == 0) {
     583                                        dlg.lM01FogGroup.setVisible(false);
     584                                        dlg.tfM01FogGroup.setVisible(false);
     585                                        dlg.lM01FogPeriod.setVisible(false);
     586                                        dlg.tfM01FogPeriod.setVisible(false);
     587                                } else {
     588                                        dlg.lM01FogGroup.setVisible(true);
     589                                        dlg.tfM01FogGroup.setVisible(true);
     590                                        dlg.lM01FogPeriod.setVisible(true);
     591                                        dlg.tfM01FogPeriod.setVisible(true);
     592                                }
     593                        } else {
     594                                dlg.cbM01Fog.setVisible(false);
     595                                dlg.lM01FogGroup.setVisible(false);
     596                                dlg.tfM01FogGroup.setVisible(false);
     597                                dlg.lM01FogPeriod.setVisible(false);
     598                                dlg.tfM01FogPeriod.setVisible(false);
     599                        }
     600
     601                        if (isFired()) {
     602                                String lp, c;
     603                                String tmp = null;
     604                                int i1;
     605
     606                                String col = getLightColour();
     607                                if (col.equals("W")) {
     608                                        dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
     609                                                        "/images/Light_White_120.png")));
     610                                        dlg.cbM01Colour.setSelectedIndex(WHITE_LIGHT);
     611                                } else if (col.equals("R")) {
     612                                        dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
     613                                                        "/images/Light_Red_120.png")));
     614                                        dlg.cbM01Colour.setSelectedIndex(RED_LIGHT);
     615                                } else if (col.equals("G")) {
     616                                        dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
     617                                                        "/images/Light_Green_120.png")));
     618                                        dlg.cbM01Colour.setSelectedIndex(GREEN_LIGHT);
     619                                } else {
     620                                        dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
     621                                                        "/images/Light_Magenta_120.png")));
     622                                        dlg.cbM01Colour.setSelectedIndex(UNKNOWN_COLOUR);
     623                                }
     624
     625                                c = getLightChar();
     626                                if (c.contains("+")) {
     627                                        i1 = c.indexOf("+");
     628                                        tmp = c.substring(i1, c.length());
     629                                        c = c.substring(0, i1);
     630                                        if (!getLightGroup().isEmpty()) {
     631                                                c = c + "(" + getLightGroup() + ")";
     632                                        }
     633                                        if (tmp != null)
     634                                                c = c + tmp;
     635                                }
     636                                dlg.cbM01Kennung.setSelectedItem(c);
     637                                if ((dlg.cbM01Kennung.getSelectedIndex() != 0)
     638                                                && (!getLightGroup().isEmpty())
     639                                                || (((String) dlg.cbM01Kennung.getSelectedItem()).contains("("))
     640                                                && !(((String) dlg.cbM01Kennung.getSelectedItem()).contains("+"))) {
     641                                        c = c + "(" + getLightGroup() + ")";
     642                                        dlg.cbM01Kennung.setSelectedItem(c);
     643                                }
     644                                c = c + " " + getLightColour();
     645                                lp = getLightPeriod();
     646                                if (!lp.isEmpty())
     647                                        c = c + " " + lp + "s";
     648                                dlg.lM01FireMark.setText(c);
     649                                dlg.cM01Fired.setVisible(true);
     650                                dlg.lM01Kennung.setVisible(true);
     651                                dlg.cbM01Kennung.setVisible(true);
     652                                if (((String) dlg.cbM01Kennung.getSelectedItem()).contains("(")) {
     653                                        dlg.tfM01Group.setVisible(false);
     654                                        dlg.lM01Group.setVisible(false);
     655                                } else {
     656                                        dlg.lM01Group.setVisible(true);
     657                                        dlg.tfM01Group.setVisible(true);
     658                                }
     659                                dlg.tfM01Group.setText(getLightGroup());
     660                                dlg.lM01RepeatTime.setVisible(true);
     661                                dlg.tfM01RepeatTime.setVisible(true);
     662                                if (isSectored()) {
     663                                        dlg.rbM01Fired1.setSelected(false);
     664                                        dlg.rbM01FiredN.setSelected(true);
     665                                        if ((getSectorIndex() != 0) && (!LightChar[0].isEmpty()))
     666                                                dlg.cbM01Kennung.setEnabled(false);
     667                                        else
     668                                                dlg.cbM01Kennung.setEnabled(true);
     669                                        dlg.cbM01Kennung.setSelectedItem(getLightChar());
     670                                        if ((getSectorIndex() != 0) && (!LightGroup[0].isEmpty()))
     671                                                dlg.tfM01Group.setEnabled(false);
     672                                        else
     673                                                dlg.tfM01Group.setEnabled(true);
     674                                        dlg.tfM01Group.setText(getLightGroup());
     675                                        if ((getSectorIndex() != 0) && (!LightPeriod[0].isEmpty()))
     676                                                dlg.tfM01RepeatTime.setEnabled(false);
     677                                        else
     678                                                dlg.tfM01RepeatTime.setEnabled(true);
     679                                        dlg.tfM01RepeatTime.setText(getLightPeriod());
     680                                        if ((getSectorIndex() != 0) && (!Height[0].isEmpty()))
     681                                                dlg.tfM01Height.setEnabled(false);
     682                                        else
     683                                                dlg.tfM01Height.setEnabled(true);
     684                                        dlg.tfM01Height.setText(getHeight());
     685                                        if ((getSectorIndex() != 0) && (!Range[0].isEmpty()))
     686                                                dlg.tfM01Range.setEnabled(false);
     687                                        else
     688                                                dlg.tfM01Range.setEnabled(true);
     689                                        dlg.tfM01Range.setText(getRange());
     690                                        dlg.lM01Sector.setVisible(true);
     691                                        dlg.cbM01Sector.setVisible(true);
     692                                        if (getSectorIndex() == 0) {
     693                                                dlg.lM01Colour.setVisible(false);
     694                                                dlg.cbM01Colour.setVisible(false);
     695                                                dlg.lM01Bearing.setVisible(false);
     696                                                dlg.tfM01Bearing.setVisible(false);
     697                                                dlg.tfM02Bearing.setVisible(false);
     698                                                dlg.tfM01Radius.setVisible(false);
     699                                        } else {
     700                                                dlg.lM01Colour.setVisible(true);
     701                                                dlg.cbM01Colour.setVisible(true);
     702                                                dlg.lM01Bearing.setVisible(true);
     703                                                dlg.tfM01Bearing.setVisible(true);
     704                                                dlg.tfM01Bearing.setText(getBearing1());
     705                                                dlg.tfM02Bearing.setVisible(true);
     706                                                dlg.tfM02Bearing.setText(getBearing2());
     707                                                dlg.tfM01Radius.setVisible(true);
     708                                                dlg.tfM01Radius.setText(getRadius());
     709                                        }
     710                                } else {
     711                                        dlg.rbM01FiredN.setSelected(false);
     712                                        dlg.rbM01Fired1.setSelected(true);
     713                                        dlg.cbM01Kennung.setEnabled(true);
     714                                        dlg.tfM01Group.setEnabled(true);
     715                                        dlg.tfM01RepeatTime.setEnabled(true);
     716                                        dlg.tfM01Height.setEnabled(true);
     717                                        dlg.tfM01Range.setEnabled(true);
     718                                        dlg.lM01Colour.setVisible(true);
     719                                        dlg.cbM01Colour.setVisible(true);
     720                                        dlg.lM01Sector.setVisible(false);
     721                                        dlg.cbM01Sector.setVisible(false);
     722                                        dlg.lM01Bearing.setVisible(false);
     723                                        dlg.tfM01Bearing.setVisible(false);
     724                                        dlg.tfM02Bearing.setVisible(false);
     725                                        dlg.tfM01Radius.setVisible(false);
     726                                }
     727                        } else {
     728                                dlg.lM01FireMark.setText("");
     729                                dlg.rbM01Fired1.setVisible(false);
     730                                dlg.rbM01FiredN.setVisible(false);
     731                                dlg.cbM01Kennung.setVisible(false);
     732                                dlg.lM01Kennung.setVisible(false);
     733                                dlg.tfM01Height.setVisible(false);
     734                                dlg.lM01Height.setVisible(false);
     735                                dlg.tfM01Range.setVisible(false);
     736                                dlg.lM01Range.setVisible(false);
     737                                dlg.cbM01Colour.setVisible(false);
     738                                dlg.lM01Colour.setVisible(false);
     739                                dlg.cbM01Sector.setVisible(false);
     740                                dlg.lM01Sector.setVisible(false);
     741                                dlg.tfM01Group.setVisible(false);
     742                                dlg.lM01Group.setVisible(false);
     743                                dlg.tfM01RepeatTime.setVisible(false);
     744                                dlg.lM01RepeatTime.setVisible(false);
     745                                dlg.tfM01Bearing.setVisible(false);
     746                                dlg.lM01Bearing.setVisible(false);
     747                                dlg.tfM02Bearing.setVisible(false);
     748                                dlg.tfM01Radius.setVisible(false);
     749                        }
     750                } else {
     751                        dlg.bM01Save.setEnabled(false);
     752                        dlg.tfM01Name.setEnabled(false);
     753                        dlg.cM01TopMark.setVisible(false);
     754                        dlg.cbM01TopMark.setVisible(false);
     755                        dlg.cM01Radar.setVisible(false);
     756                        dlg.cM01Racon.setVisible(false);
     757                        dlg.cbM01Racon.setVisible(false);
     758                        dlg.tfM01Racon.setVisible(false);
     759                        dlg.lM01Racon.setVisible(false);
     760                        dlg.cM01Fog.setVisible(false);
     761                        dlg.cbM01Fog.setVisible(false);
     762                        dlg.tfM01FogGroup.setVisible(false);
     763                        dlg.lM01FogGroup.setVisible(false);
     764                        dlg.tfM01FogPeriod.setVisible(false);
     765                        dlg.lM01FogPeriod.setVisible(false);
     766                        dlg.cM01Fired.setVisible(false);
     767                        dlg.rbM01Fired1.setVisible(false);
     768                        dlg.rbM01FiredN.setVisible(false);
     769                        dlg.cbM01Kennung.setVisible(false);
     770                        dlg.lM01Kennung.setVisible(false);
     771                        dlg.tfM01Height.setVisible(false);
     772                        dlg.lM01Height.setVisible(false);
     773                        dlg.tfM01Range.setVisible(false);
     774                        dlg.lM01Range.setVisible(false);
     775                        dlg.cbM01Colour.setVisible(false);
     776                        dlg.lM01Colour.setVisible(false);
     777                        dlg.cbM01Sector.setVisible(false);
     778                        dlg.lM01Sector.setVisible(false);
     779                        dlg.tfM01Group.setVisible(false);
     780                        dlg.lM01Group.setVisible(false);
     781                        dlg.tfM01RepeatTime.setVisible(false);
     782                        dlg.lM01RepeatTime.setVisible(false);
     783                        dlg.tfM01Bearing.setVisible(false);
     784                        dlg.lM01Bearing.setVisible(false);
     785                        dlg.tfM02Bearing.setVisible(false);
     786                        dlg.tfM01Radius.setVisible(false);
     787                }
     788                dlg.paintlock = false;
     789        }
     790
     791        public void saveSign(String type) {
     792                delSeaMarkKeys(Node);
     793
     794                String str = dlg.tfM01Name.getText();
     795                if (!str.isEmpty())
     796                        Main.main.undoRedo.add(new ChangePropertyCommand(Node, "seamark:name",
     797                                        str));
     798                Main.main.undoRedo
     799                                .add(new ChangePropertyCommand(Node, "seamark:type", type));
     800        }
     801
     802        protected void saveLightData() {
     803                String colour;
     804                if (dlg.cM01Fired.isSelected()) {
     805                        if (!(colour = LightColour[0]).isEmpty())
     806                                if (colour.equals("R")) {
     807                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     808                                                        "seamark:light:colour", "red"));
     809                                } else if (colour.equals("G")) {
     810                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     811                                                        "seamark:light:colour", "green"));
     812                                } else if (colour.equals("W")) {
     813                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     814                                                        "seamark:light:colour", "white"));
     815                                }
     816
     817                        if (!LightPeriod[0].isEmpty())
     818                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     819                                                "seamark:light:period", LightPeriod[0]));
     820
     821                        if (!LightChar[0].isEmpty())
     822                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     823                                                "seamark:light:character", LightChar[0]));
     824
     825                        if (!LightGroup[0].isEmpty())
     826                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     827                                                "seamark:light:group", LightGroup[0]));
     828
     829                        if (!Height[0].isEmpty())
     830                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     831                                                "seamark:light:height", Height[0]));
     832
     833                        if (!Range[0].isEmpty())
     834                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     835                                                "seamark:light:range", Range[0]));
     836
     837                        for (int i = 1; i < 10; i++) {
     838                                if ((colour = LightColour[i]) != null)
     839                                        if (colour.equals("R")) {
     840                                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     841                                                                "seamark:light:" + i + ":colour", "red"));
     842                                                if ((Bearing1[i] != null) && (Bearing2[i] != null)
     843                                                                && (Radius[i] != null))
     844                                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     845                                                                        "seamark:light:" + i, "red:" + Bearing1[i] + ":"
     846                                                                                        + Bearing2[i] + ":" + Radius[i]));
     847                                        } else if (colour.equals("G")) {
     848                                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     849                                                                "seamark:light:" + i + ":colour", "green"));
     850                                                if ((Bearing1[i] != null) && (Bearing2[i] != null)
     851                                                                && (Radius[i] != null))
     852                                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     853                                                                        "seamark:light:" + i, "green:" + Bearing1[i] + ":"
     854                                                                                        + Bearing2[i] + ":" + Radius[i]));
     855                                        } else if (colour.equals("W")) {
     856                                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     857                                                                "seamark:light:" + i + ":colour", "white"));
     858                                                if ((Bearing1[i] != null) && (Bearing2[i] != null)
     859                                                                && (Radius[i] != null))
     860                                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     861                                                                        "seamark:light:" + i, "white:" + Bearing1[i] + ":"
     862                                                                                        + Bearing2[i] + ":" + Radius[i]));
     863                                        }
     864
     865                                if (LightPeriod[i] != null)
     866                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     867                                                        "seamark:light:" + i + ":period", LightPeriod[i]));
     868
     869                                if (LightChar[i] != null)
     870                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     871                                                        "seamark:light:" + i + ":character", LightChar[i]));
     872
     873                                if (LightGroup[i] != null)
     874                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     875                                                        "seamark:light:" + i + ":group", LightGroup[i]));
     876
     877                                if (Height[i] != null)
     878                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     879                                                        "seamark:light:" + i + ":height", Height[i]));
     880
     881                                if (Range[i] != null)
     882                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     883                                                        "seamark:light:" + i + ":range", Range[i]));
     884
     885                                if (Bearing1[i] != null)
     886                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     887                                                        "seamark:light:" + i + ":sector_start", Bearing1[i]));
     888
     889                                if (Bearing2[i] != null)
     890                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     891                                                        "seamark:light:" + i + ":sector_end", Bearing2[i]));
     892                        }
     893                }
     894        }
     895
     896        protected void saveTopMarkData(String shape, String colour) {
     897                if (dlg.cM01TopMark.isSelected()) {
     898                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     899                                        "seamark:topmark:shape", shape));
     900                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     901                                        "seamark:topmark:colour", colour));
     902                }
     903        }
     904
     905        protected void saveRadarFogData() {
     906                if (hasRadar()) {
     907                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     908                                        "seamark:radar_reflector", "yes"));
     909                }
     910                if (hasRacon()) {
     911                        switch (RaType) {
     912                        case RATYPE_RACON:
     913                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     914                                                "seamark:radar_transponder:category", "racon"));
     915                                if (!getRaconGroup().isEmpty())
     916                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     917                                                        "seamark:radar_transponder:group", getRaconGroup()));
     918                                break;
     919                        case RATYPE_RAMARK:
     920                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     921                                                "seamark:radar_transponder:category", "ramark"));
     922                                break;
     923                        case RATYPE_LEADING:
     924                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     925                                                "seamark:radar_transponder:category", "leading"));
     926                                break;
     927                        default:
     928                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     929                                                "seamark:radar_transponder", "yes"));
     930                        }
     931                }
     932                if (hasFog()) {
     933                        if (getFogSound() == 0) {
     934                                Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     935                                                "seamark:fog_signal", "yes"));
     936                        } else {
     937                                switch (getFogSound()) {
     938                                case FOG_HORN:
     939                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     940                                                        "seamark:fog_signal:category", "horn"));
     941                                        break;
     942                                case FOG_SIREN:
     943                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     944                                                        "seamark:fog_signal:category", "siren"));
     945                                        break;
     946                                case FOG_DIA:
     947                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     948                                                        "seamark:fog_signal:category", "diaphone"));
     949                                        break;
     950                                case FOG_BELL:
     951                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     952                                                        "seamark:fog_signal:category", "bell"));
     953                                        break;
     954                                case FOG_WHIS:
     955                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     956                                                        "seamark:fog_signal:category", "whistle"));
     957                                        break;
     958                                case FOG_GONG:
     959                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     960                                                        "seamark:fog_signal:category", "gong"));
     961                                        break;
     962                                case FOG_EXPLOS:
     963                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     964                                                        "seamark:fog_signal:category", "explosive"));
     965                                        break;
     966                                }
     967                                if (!getFogGroup().isEmpty())
     968                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     969                                                        "seamark:fog_signal:group", getFogGroup()));
     970                                if (!getFogPeriod().isEmpty())
     971                                        Main.main.undoRedo.add(new ChangePropertyCommand(Node,
     972                                                        "seamark:fog_signal:period", getFogPeriod()));
     973                        }
     974                }
     975        }
     976
     977        public void refreshStyles() {
     978        }
     979
     980        public void refreshLights() {
     981                dlg.cbM01Kennung.removeAllItems();
     982                dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
     983                dlg.cbM01Kennung.addItem("Fl"); //$NON-NLS-1$
     984                dlg.cbM01Kennung.addItem("LFl"); //$NON-NLS-1$
     985                dlg.cbM01Kennung.addItem("Iso"); //$NON-NLS-1$
     986                dlg.cbM01Kennung.addItem("F"); //$NON-NLS-1$
     987                dlg.cbM01Kennung.addItem("FFl"); //$NON-NLS-1$
     988                dlg.cbM01Kennung.addItem("Oc"); //$NON-NLS-1$
     989                dlg.cbM01Kennung.addItem("Q"); //$NON-NLS-1$
     990                dlg.cbM01Kennung.addItem("IQ"); //$NON-NLS-1$
     991                dlg.cbM01Kennung.addItem("VQ"); //$NON-NLS-1$
     992                dlg.cbM01Kennung.addItem("IVQ"); //$NON-NLS-1$
     993                dlg.cbM01Kennung.addItem("UQ"); //$NON-NLS-1$
     994                dlg.cbM01Kennung.addItem("IUQ"); //$NON-NLS-1$
     995                dlg.cbM01Kennung.addItem("Mo"); //$NON-NLS-1$
     996                dlg.cbM01Kennung.setSelectedIndex(0);
     997        }
     998
     999        public void resetMask() {
     1000                setRegion(Main.pref.get("tomsplugin.IALA").equals("B"));
     1001
     1002                dlg.lM01Icon.setIcon(null);
     1003                dlg.lM02Icon.setIcon(null);
     1004                dlg.lM03Icon.setIcon(null);
     1005                dlg.lM04Icon.setIcon(null);
     1006                dlg.lM05Icon.setIcon(null);
     1007                dlg.lM06Icon.setIcon(null);
     1008
     1009                dlg.rbM01RegionA.setEnabled(false);
     1010                dlg.rbM01RegionB.setEnabled(false);
     1011                dlg.lM01FireMark.setText("");
     1012                dlg.cbM01CatOfMark.setVisible(false);
     1013                dlg.lM01CatOfMark.setVisible(false);
     1014                setBuoyIndex(0);
     1015                dlg.cbM01StyleOfMark.setVisible(false);
     1016                dlg.lM01StyleOfMark.setVisible(false);
     1017                setStyleIndex(0);
     1018                dlg.tfM01Name.setText("");
     1019                dlg.tfM01Name.setEnabled(false);
     1020                setName("");
     1021                dlg.cM01TopMark.setSelected(false);
     1022                dlg.cM01TopMark.setVisible(false);
     1023                dlg.cbM01TopMark.setVisible(false);
     1024                setTopMark(false);
     1025                dlg.cM01Radar.setSelected(false);
     1026                dlg.cM01Radar.setVisible(false);
     1027                setRadar(false);
     1028                dlg.cM01Racon.setSelected(false);
     1029                dlg.cM01Racon.setVisible(false);
     1030                dlg.cbM01Racon.setVisible(false);
     1031                dlg.tfM01Racon.setText("");
     1032                dlg.tfM01Racon.setVisible(false);
     1033                dlg.lM01Racon.setVisible(false);
     1034                setRacon(false);
     1035                setRaType(0);
     1036                dlg.cM01Fog.setSelected(false);
     1037                dlg.cM01Fog.setVisible(false);
     1038                dlg.cbM01Fog.setVisible(false);
     1039                setFogSound(0);
     1040                dlg.tfM01FogGroup.setText("");
     1041                dlg.tfM01FogGroup.setVisible(false);
     1042                dlg.lM01FogGroup.setVisible(false);
     1043                dlg.tfM01FogPeriod.setText("");
     1044                dlg.tfM01FogPeriod.setVisible(false);
     1045                dlg.lM01FogPeriod.setVisible(false);
     1046                setFog(false);
     1047                dlg.cM01Fired.setSelected(false);
     1048                dlg.cM01Fired.setVisible(false);
     1049                setFired(false);
     1050                dlg.rbM01Fired1.setVisible(false);
     1051                dlg.rbM01Fired1.setSelected(true);
     1052                dlg.rbM01FiredN.setVisible(false);
     1053                dlg.rbM01FiredN.setSelected(false);
     1054                setSectored(false);
     1055                dlg.cbM01Kennung.removeAllItems();
     1056                dlg.cbM01Kennung.setVisible(false);
     1057                dlg.lM01Kennung.setVisible(false);
     1058                setLightChar("");
     1059                dlg.tfM01Height.setText("");
     1060                dlg.tfM01Height.setVisible(false);
     1061                dlg.lM01Height.setVisible(false);
     1062                setHeight("");
     1063                dlg.tfM01Range.setText("");
     1064                dlg.tfM01Range.setVisible(false);
     1065                dlg.lM01Range.setVisible(false);
     1066                setRange("");
     1067                dlg.cbM01Colour.setVisible(false);
     1068                dlg.lM01Colour.setVisible(false);
     1069                setLightColour("");
     1070                dlg.cbM01Sector.setVisible(false);
     1071                dlg.lM01Sector.setVisible(false);
     1072                setSectorIndex(0);
     1073                dlg.tfM01Group.setText("");
     1074                dlg.tfM01Group.setVisible(false);
     1075                dlg.lM01Group.setVisible(false);
     1076                setLightGroup("");
     1077                dlg.tfM01RepeatTime.setText("");
     1078                dlg.tfM01RepeatTime.setVisible(false);
     1079                dlg.lM01RepeatTime.setVisible(false);
     1080                setLightPeriod("");
     1081                dlg.tfM01Bearing.setText("");
     1082                dlg.tfM01Bearing.setVisible(false);
     1083                dlg.lM01Bearing.setVisible(false);
     1084                setBearing1("");
     1085                dlg.tfM02Bearing.setText("");
     1086                dlg.tfM02Bearing.setVisible(false);
     1087                setBearing2("");
     1088                dlg.tfM01Radius.setText("");
     1089                dlg.tfM01Radius.setVisible(false);
     1090                setRadius("");
     1091
     1092                dlg.bM01Save.setEnabled(false);
     1093        }
    10941094
    10951095}
  • applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java

    r23268 r23269  
    1818public class BuoyCard extends Buoy {
    1919
    20     public BuoyCard(SmpDialogAction dia, Node node) {
    21         super(dia);
    22 
    23         String str;
    24         Map<String, String> keys;
    25         keys = node.getKeys();
    26         setNode(node);
    27 
    28         resetMask();
    29         dlg.cbM01CatOfMark.removeAllItems();
    30         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
    31         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.158")); //$NON-NLS-1$
    32         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.159")); //$NON-NLS-1$
    33         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.160")); //$NON-NLS-1$
    34         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.161")); //$NON-NLS-1$
    35 
    36         dlg.cbM01CatOfMark.setEnabled(true);
    37         dlg.cbM01CatOfMark.setVisible(true);
    38         dlg.lM01CatOfMark.setVisible(true);
    39 
    40         dlg.cbM01StyleOfMark.removeAllItems();
    41         dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
    42         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
    43         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
    44         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
    45         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
    46         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
    47         dlg.cbM01StyleOfMark.setVisible(true);
    48         dlg.lM01StyleOfMark.setVisible(true);
    49 
    50         dlg.cbM01TypeOfMark.setSelectedIndex(CARDINAL);
    51 
    52         setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
    53         if (keys.containsKey("name")) //$NON-NLS-1$
    54             setName(keys.get("name")); //$NON-NLS-1$
    55 
    56         if (keys.containsKey("seamark:name")) //$NON-NLS-1$
    57             setName(keys.get("seamark:name")); //$NON-NLS-1$
    58 
    59         if (keys.containsKey("seamark:buoy_cardinal:name")) //$NON-NLS-1$
    60             setName(keys.get("seamark:buoy_cardinal:name")); //$NON-NLS-1$
    61         else if (keys.containsKey("seamark:beacon_cardinal:name")) //$NON-NLS-1$
    62             setName(keys.get("seamark:beacon_cardinal:name")); //$NON-NLS-1$
    63         else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
    64             setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
    65 
    66         String cat = ""; //$NON-NLS-1$
    67         String col = ""; //$NON-NLS-1$
    68 
    69         if (keys.containsKey("seamark:buoy_cardinal:category")) //$NON-NLS-1$
    70             cat = keys.get("seamark:buoy_cardinal:category"); //$NON-NLS-1$
    71         else if (keys.containsKey("seamark:beacon_cardinal:category")) //$NON-NLS-1$
    72             cat = keys.get("seamark:beacon_cardinal:category"); //$NON-NLS-1$
    73 
    74         if (keys.containsKey("seamark:buoy_cardinal:colour")) //$NON-NLS-1$
    75             col = keys.get("seamark:buoy_cardinal:colour"); //$NON-NLS-1$
    76         else if (keys.containsKey("seamark:beacon_cardinal:colour")) //$NON-NLS-1$
    77             col = keys.get("seamark:beacon_cardinal:colour"); //$NON-NLS-1$
    78         else if (keys.containsKey("seamark:light_float:colour")) //$NON-NLS-1$
    79             col = keys.get("seamark:light_float:colour"); //$NON-NLS-1$
    80 
    81         if (cat.isEmpty()) { //$NON-NLS-1$
    82             if (col.equals("black;yellow")) { //$NON-NLS-1$
    83                 setBuoyIndex(CARD_NORTH);
    84                 setColour(BLACK_YELLOW);
    85             } else if (col.equals("black;yellow;black")) { //$NON-NLS-1$
    86                 setBuoyIndex(CARD_EAST);
    87                 setColour(BLACK_YELLOW_BLACK);
    88             } else if (col.equals("yellow;black")) { //$NON-NLS-1$
    89                 setBuoyIndex(CARD_SOUTH);
    90                 setColour(YELLOW_BLACK);
    91             } else if (col.equals("yellow;black;yellow")) { //$NON-NLS-1$
    92                 setBuoyIndex(CARD_WEST);
    93                 setColour(YELLOW_BLACK_YELLOW);
    94             }
    95         } else if (cat.equals("north")) { //$NON-NLS-1$
    96             setBuoyIndex(CARD_NORTH);
    97             setColour(BLACK_YELLOW);
    98         } else if (cat.equals("east")) { //$NON-NLS-1$
    99             setBuoyIndex(CARD_EAST);
    100             setColour(BLACK_YELLOW_BLACK);
    101         } else if (cat.equals("south")) { //$NON-NLS-1$
    102             setBuoyIndex(CARD_SOUTH);
    103             setColour(YELLOW_BLACK);
    104         } else if (cat.equals("west")) { //$NON-NLS-1$
    105             setBuoyIndex(CARD_WEST);
    106             setColour(YELLOW_BLACK_YELLOW);
    107         }
    108 
    109         if (keys.containsKey("seamark:buoy_cardinal:shape")) { //$NON-NLS-1$
    110             str = keys.get("seamark:buoy_cardinal:shape"); //$NON-NLS-1$
    111 
    112             if (str.equals("pillar")) //$NON-NLS-1$
    113                 setStyleIndex(CARD_PILLAR);
    114             else if (str.equals("spar")) //$NON-NLS-1$
    115                 setStyleIndex(CARD_SPAR);
    116         } else if (keys.containsKey("seamark:beacon_cardinal:colour")) { //$NON-NLS-1$
    117             if (keys.containsKey("seamark:beacon_cardinal:shape")) { //$NON-NLS-1$
    118                 str = keys.get("seamark:beacon_cardinal:shape"); //$NON-NLS-1$
    119 
    120                 if (str.equals("tower")) //$NON-NLS-1$
    121                     setStyleIndex(CARD_TOWER);
    122                 else
    123                     setStyleIndex(CARD_BEACON);
    124             } else
    125                 setStyleIndex(CARD_BEACON);
    126         } else if (keys.containsKey("seamark:type") //$NON-NLS-1$
    127                 && (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
    128             setStyleIndex(CARD_FLOAT);
    129         }
    130 
    131         if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
    132             setStyleIndex(0);
    133 
    134         refreshLights();
    135         parseLights(keys);
    136         parseFogRadar(keys);
    137 
    138         dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
    139         dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
    140         dlg.tfM01Name.setText(getName());
    141         dlg.cM01TopMark.setSelected(hasTopMark());
    142     }
     20        public BuoyCard(SmpDialogAction dia, Node node) {
     21                super(dia);
     22
     23                String str;
     24                Map<String, String> keys;
     25                keys = node.getKeys();
     26                setNode(node);
     27
     28                resetMask();
     29                dlg.cbM01CatOfMark.removeAllItems();
     30                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
     31                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.158")); //$NON-NLS-1$
     32                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.159")); //$NON-NLS-1$
     33                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.160")); //$NON-NLS-1$
     34                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.161")); //$NON-NLS-1$
     35
     36                dlg.cbM01CatOfMark.setEnabled(true);
     37                dlg.cbM01CatOfMark.setVisible(true);
     38                dlg.lM01CatOfMark.setVisible(true);
     39
     40                dlg.cbM01StyleOfMark.removeAllItems();
     41                dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
     42                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
     43                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
     44                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
     45                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
     46                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
     47                dlg.cbM01StyleOfMark.setVisible(true);
     48                dlg.lM01StyleOfMark.setVisible(true);
     49
     50                dlg.cbM01TypeOfMark.setSelectedIndex(CARDINAL);
     51
     52                setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
     53                if (keys.containsKey("name")) //$NON-NLS-1$
     54                        setName(keys.get("name")); //$NON-NLS-1$
     55
     56                if (keys.containsKey("seamark:name")) //$NON-NLS-1$
     57                        setName(keys.get("seamark:name")); //$NON-NLS-1$
     58
     59                if (keys.containsKey("seamark:buoy_cardinal:name")) //$NON-NLS-1$
     60                        setName(keys.get("seamark:buoy_cardinal:name")); //$NON-NLS-1$
     61                else if (keys.containsKey("seamark:beacon_cardinal:name")) //$NON-NLS-1$
     62                        setName(keys.get("seamark:beacon_cardinal:name")); //$NON-NLS-1$
     63                else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
     64                        setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
     65
     66                String cat = ""; //$NON-NLS-1$
     67                String col = ""; //$NON-NLS-1$
     68
     69                if (keys.containsKey("seamark:buoy_cardinal:category")) //$NON-NLS-1$
     70                        cat = keys.get("seamark:buoy_cardinal:category"); //$NON-NLS-1$
     71                else if (keys.containsKey("seamark:beacon_cardinal:category")) //$NON-NLS-1$
     72                        cat = keys.get("seamark:beacon_cardinal:category"); //$NON-NLS-1$
     73
     74                if (keys.containsKey("seamark:buoy_cardinal:colour")) //$NON-NLS-1$
     75                        col = keys.get("seamark:buoy_cardinal:colour"); //$NON-NLS-1$
     76                else if (keys.containsKey("seamark:beacon_cardinal:colour")) //$NON-NLS-1$
     77                        col = keys.get("seamark:beacon_cardinal:colour"); //$NON-NLS-1$
     78                else if (keys.containsKey("seamark:light_float:colour")) //$NON-NLS-1$
     79                        col = keys.get("seamark:light_float:colour"); //$NON-NLS-1$
     80
     81                if (cat.isEmpty()) { //$NON-NLS-1$
     82                        if (col.equals("black;yellow")) { //$NON-NLS-1$
     83                                setBuoyIndex(CARD_NORTH);
     84                                setColour(BLACK_YELLOW);
     85                        } else if (col.equals("black;yellow;black")) { //$NON-NLS-1$
     86                                setBuoyIndex(CARD_EAST);
     87                                setColour(BLACK_YELLOW_BLACK);
     88                        } else if (col.equals("yellow;black")) { //$NON-NLS-1$
     89                                setBuoyIndex(CARD_SOUTH);
     90                                setColour(YELLOW_BLACK);
     91                        } else if (col.equals("yellow;black;yellow")) { //$NON-NLS-1$
     92                                setBuoyIndex(CARD_WEST);
     93                                setColour(YELLOW_BLACK_YELLOW);
     94                        }
     95                } else if (cat.equals("north")) { //$NON-NLS-1$
     96                        setBuoyIndex(CARD_NORTH);
     97                        setColour(BLACK_YELLOW);
     98                } else if (cat.equals("east")) { //$NON-NLS-1$
     99                        setBuoyIndex(CARD_EAST);
     100                        setColour(BLACK_YELLOW_BLACK);
     101                } else if (cat.equals("south")) { //$NON-NLS-1$
     102                        setBuoyIndex(CARD_SOUTH);
     103                        setColour(YELLOW_BLACK);
     104                } else if (cat.equals("west")) { //$NON-NLS-1$
     105                        setBuoyIndex(CARD_WEST);
     106                        setColour(YELLOW_BLACK_YELLOW);
     107                }
     108
     109                if (keys.containsKey("seamark:buoy_cardinal:shape")) { //$NON-NLS-1$
     110                        str = keys.get("seamark:buoy_cardinal:shape"); //$NON-NLS-1$
     111
     112                        if (str.equals("pillar")) //$NON-NLS-1$
     113                                setStyleIndex(CARD_PILLAR);
     114                        else if (str.equals("spar")) //$NON-NLS-1$
     115                                setStyleIndex(CARD_SPAR);
     116                } else if (keys.containsKey("seamark:beacon_cardinal:colour")) { //$NON-NLS-1$
     117                        if (keys.containsKey("seamark:beacon_cardinal:shape")) { //$NON-NLS-1$
     118                                str = keys.get("seamark:beacon_cardinal:shape"); //$NON-NLS-1$
     119
     120                                if (str.equals("tower")) //$NON-NLS-1$
     121                                        setStyleIndex(CARD_TOWER);
     122                                else
     123                                        setStyleIndex(CARD_BEACON);
     124                        } else
     125                                setStyleIndex(CARD_BEACON);
     126                } else if (keys.containsKey("seamark:type") //$NON-NLS-1$
     127                                && (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
     128                        setStyleIndex(CARD_FLOAT);
     129                }
     130
     131                if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
     132                        setStyleIndex(0);
     133
     134                refreshLights();
     135                parseLights(keys);
     136                parseFogRadar(keys);
     137
     138                dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
     139                dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
     140                dlg.tfM01Name.setText(getName());
     141                dlg.cM01TopMark.setSelected(hasTopMark());
     142        }
    143143
    144144        public void refreshLights() {
    145         dlg.cbM01Kennung.removeAllItems();
    146         dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
    147         dlg.cbM01Kennung.setSelectedIndex(0);
     145                dlg.cbM01Kennung.removeAllItems();
     146                dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
     147                dlg.cbM01Kennung.setSelectedIndex(0);
    148148
    149149                switch (getBuoyIndex()) {
     
    165165                        break;
    166166                }
    167     }
    168 
    169     public boolean isValid() {
    170         return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
    171     }
     167        }
     168
     169        public boolean isValid() {
     170                return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
     171        }
    172172
    173173        public void setLightColour() {
     
    180180                super.paintSign();
    181181
    182         dlg.sM01StatusBar.setText(getErrMsg());
     182                dlg.sM01StatusBar.setText(getErrMsg());
    183183
    184184                if (isValid()) {
     
    223223                                image += "_Pillar"; //$NON-NLS-1$
    224224                                break;
    225             case SeaMark.CARD_SPAR:
    226                 image += "_Spar"; //$NON-NLS-1$
    227                 break;
    228             case SeaMark.CARD_BEACON:
    229                 image += "_Beacon"; //$NON-NLS-1$
    230                 break;
    231             case SeaMark.CARD_TOWER:
    232                 image += "_Tower"; //$NON-NLS-1$
    233                 break;
    234             case SeaMark.CARD_FLOAT:
    235                 image += "_Float"; //$NON-NLS-1$
    236                 break;
    237             default:
    238                 return;
    239             }
    240 
    241             switch (getBuoyIndex()) {
    242             case CARD_NORTH:
    243                 image += "_North"; //$NON-NLS-1$
    244                 break;
    245             case CARD_EAST:
    246                 image += "_East"; //$NON-NLS-1$
    247                 break;
    248             case CARD_SOUTH:
    249                 image += "_South"; //$NON-NLS-1$
    250                 break;
    251             case CARD_WEST:
    252                 image += "_West"; //$NON-NLS-1$
    253                 break;
    254             default:
    255                 return;
    256             }
    257 
    258             if (!image.equals("/images/Cardinal")) { //$NON-NLS-1$
    259                 image += ".png"; //$NON-NLS-1$
    260                 dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
    261 
    262             } else
    263                 dlg.lM01Icon.setIcon(null);
    264         }
    265     }
    266 
    267     public void saveSign() {
    268         Node node = getNode();
    269         if (node == null) {
    270             return;
    271         }
    272 
    273         String shape = ""; //$NON-NLS-1$
    274 
    275         switch (getStyleIndex()) {
    276         case CARD_PILLAR:
    277             super.saveSign("buoy_cardinal"); //$NON-NLS-1$
    278             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    279                     "seamark:buoy_cardinal:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
    280             break;
    281         case CARD_SPAR:
    282             super.saveSign("buoy_cardinal"); //$NON-NLS-1$
    283             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    284                     "seamark:buoy_cardinal:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
    285             break;
    286         case CARD_BEACON:
    287             super.saveSign("beacon_cardinal"); //$NON-NLS-1$
    288             break;
    289         case CARD_TOWER:
    290             super.saveSign("beacon_cardinal"); //$NON-NLS-1$
    291             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    292                     "seamark:beacon_cardinal:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
    293             break;
    294         case CARD_FLOAT:
    295             super.saveSign("light_float"); //$NON-NLS-1$
    296             break;
    297         default:
    298         }
    299 
    300         switch (getStyleIndex()) {
    301         case CARD_PILLAR:
    302         case CARD_SPAR:
    303             switch (getBuoyIndex()) {
    304             case SeaMark.CARD_NORTH:
    305                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    306                         "seamark:buoy_cardinal:category", "north")); //$NON-NLS-1$ //$NON-NLS-2$
    307                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    308                         "seamark:buoy_cardinal:colour", "black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    309                 shape = "2 cones up"; //$NON-NLS-1$
    310                 break;
    311 
    312             case SeaMark.CARD_EAST:
    313                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    314                         "seamark:buoy_cardinal:category", "east")); //$NON-NLS-1$ //$NON-NLS-2$
    315                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    316                         "seamark:buoy_cardinal:colour", "black;yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
    317                 shape = "2 cones base together"; //$NON-NLS-1$
    318                 break;
    319 
    320             case SeaMark.CARD_SOUTH:
    321                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    322                         "seamark:buoy_cardinal:category", "south")); //$NON-NLS-1$ //$NON-NLS-2$
    323                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    324                         "seamark:buoy_cardinal:colour", "yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
    325                 shape = "2 cones down"; //$NON-NLS-1$
    326                 break;
    327 
    328             case SeaMark.CARD_WEST:
    329                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    330                         "seamark:buoy_cardinal:category", "west")); //$NON-NLS-1$ //$NON-NLS-2$
    331                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    332                         "seamark:buoy_cardinal:colour", "yellow;black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    333                 shape = "2 cones point together"; //$NON-NLS-1$
    334                 break;
    335             }
    336             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    337                     "seamark:buoy_cardinal:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    338             break;
    339         case CARD_BEACON:
    340         case CARD_TOWER:
    341             switch (getBuoyIndex()) {
    342             case SeaMark.CARD_NORTH:
    343                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    344                         "seamark:beacon_cardinal:category", "north")); //$NON-NLS-1$ //$NON-NLS-2$
    345                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    346                         "seamark:beacon_cardinal:colour", "black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    347                 shape = "2 cones up"; //$NON-NLS-1$
    348                 break;
    349 
    350             case SeaMark.CARD_EAST:
    351                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    352                         "seamark:beacon_cardinal:category", "east")); //$NON-NLS-1$ //$NON-NLS-2$
    353                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    354                         "seamark:beacon_cardinal:colour", "black;yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
    355                 shape = "2 cones base together"; //$NON-NLS-1$
    356                 break;
    357 
    358             case SeaMark.CARD_SOUTH:
    359                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    360                         "seamark:beacon_cardinal:category", "south")); //$NON-NLS-1$ //$NON-NLS-2$
    361                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    362                         "seamark:beacon_cardinal:colour", "yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
    363                 shape = "2 cones down"; //$NON-NLS-1$
    364                 break;
    365 
    366             case SeaMark.CARD_WEST:
    367                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    368                         "seamark:beacon_cardinal:category", "west")); //$NON-NLS-1$ //$NON-NLS-2$
    369                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    370                         "seamark:beacon_cardinal:colour", "yellow;black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    371                 shape = "2 cones point together"; //$NON-NLS-1$
    372                 break;
    373             }
    374             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    375                     "seamark:beacon_cardinal:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    376             break;
    377         case CARD_FLOAT:
    378             switch (getBuoyIndex()) {
    379             case SeaMark.CARD_NORTH:
    380                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    381                         "seamark:light_float:colour", "black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    382                 shape = "2 cones up"; //$NON-NLS-1$
    383                 break;
    384 
    385             case SeaMark.CARD_EAST:
    386                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    387                         "seamark:light_float:colour", "black;yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
    388                 shape = "2 cones base together"; //$NON-NLS-1$
    389                 break;
    390 
    391             case SeaMark.CARD_SOUTH:
    392                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    393                         "seamark:light_float:colour", "yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
    394                 shape = "2 cones down"; //$NON-NLS-1$
    395                 break;
    396 
    397             case SeaMark.CARD_WEST:
    398                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    399                         "seamark:light_float:colour", "yellow;black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    400                 shape = "2 cones point together"; //$NON-NLS-1$
    401                 break;
    402             }
    403             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    404                     "seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    405             break;
    406         }
    407         saveTopMarkData(shape, "black"); //$NON-NLS-1$
    408         saveLightData(); //$NON-NLS-1$
    409         saveRadarFogData();
    410     }
     225                        case SeaMark.CARD_SPAR:
     226                                image += "_Spar"; //$NON-NLS-1$
     227                                break;
     228                        case SeaMark.CARD_BEACON:
     229                                image += "_Beacon"; //$NON-NLS-1$
     230                                break;
     231                        case SeaMark.CARD_TOWER:
     232                                image += "_Tower"; //$NON-NLS-1$
     233                                break;
     234                        case SeaMark.CARD_FLOAT:
     235                                image += "_Float"; //$NON-NLS-1$
     236                                break;
     237                        default:
     238                                return;
     239                        }
     240
     241                        switch (getBuoyIndex()) {
     242                        case CARD_NORTH:
     243                                image += "_North"; //$NON-NLS-1$
     244                                break;
     245                        case CARD_EAST:
     246                                image += "_East"; //$NON-NLS-1$
     247                                break;
     248                        case CARD_SOUTH:
     249                                image += "_South"; //$NON-NLS-1$
     250                                break;
     251                        case CARD_WEST:
     252                                image += "_West"; //$NON-NLS-1$
     253                                break;
     254                        default:
     255                                return;
     256                        }
     257
     258                        if (!image.equals("/images/Cardinal")) { //$NON-NLS-1$
     259                                image += ".png"; //$NON-NLS-1$
     260                                dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
     261
     262                        } else
     263                                dlg.lM01Icon.setIcon(null);
     264                }
     265        }
     266
     267        public void saveSign() {
     268                Node node = getNode();
     269                if (node == null) {
     270                        return;
     271                }
     272
     273                String shape = ""; //$NON-NLS-1$
     274
     275                switch (getStyleIndex()) {
     276                case CARD_PILLAR:
     277                        super.saveSign("buoy_cardinal"); //$NON-NLS-1$
     278                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     279                                        "seamark:buoy_cardinal:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
     280                        break;
     281                case CARD_SPAR:
     282                        super.saveSign("buoy_cardinal"); //$NON-NLS-1$
     283                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     284                                        "seamark:buoy_cardinal:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
     285                        break;
     286                case CARD_BEACON:
     287                        super.saveSign("beacon_cardinal"); //$NON-NLS-1$
     288                        break;
     289                case CARD_TOWER:
     290                        super.saveSign("beacon_cardinal"); //$NON-NLS-1$
     291                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     292                                        "seamark:beacon_cardinal:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
     293                        break;
     294                case CARD_FLOAT:
     295                        super.saveSign("light_float"); //$NON-NLS-1$
     296                        break;
     297                default:
     298                }
     299
     300                switch (getStyleIndex()) {
     301                case CARD_PILLAR:
     302                case CARD_SPAR:
     303                        switch (getBuoyIndex()) {
     304                        case SeaMark.CARD_NORTH:
     305                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     306                                                "seamark:buoy_cardinal:category", "north")); //$NON-NLS-1$ //$NON-NLS-2$
     307                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     308                                                "seamark:buoy_cardinal:colour", "black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     309                                shape = "2 cones up"; //$NON-NLS-1$
     310                                break;
     311
     312                        case SeaMark.CARD_EAST:
     313                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     314                                                "seamark:buoy_cardinal:category", "east")); //$NON-NLS-1$ //$NON-NLS-2$
     315                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     316                                                "seamark:buoy_cardinal:colour", "black;yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
     317                                shape = "2 cones base together"; //$NON-NLS-1$
     318                                break;
     319
     320                        case SeaMark.CARD_SOUTH:
     321                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     322                                                "seamark:buoy_cardinal:category", "south")); //$NON-NLS-1$ //$NON-NLS-2$
     323                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     324                                                "seamark:buoy_cardinal:colour", "yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
     325                                shape = "2 cones down"; //$NON-NLS-1$
     326                                break;
     327
     328                        case SeaMark.CARD_WEST:
     329                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     330                                                "seamark:buoy_cardinal:category", "west")); //$NON-NLS-1$ //$NON-NLS-2$
     331                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     332                                                "seamark:buoy_cardinal:colour", "yellow;black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     333                                shape = "2 cones point together"; //$NON-NLS-1$
     334                                break;
     335                        }
     336                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     337                                        "seamark:buoy_cardinal:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     338                        break;
     339                case CARD_BEACON:
     340                case CARD_TOWER:
     341                        switch (getBuoyIndex()) {
     342                        case SeaMark.CARD_NORTH:
     343                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     344                                                "seamark:beacon_cardinal:category", "north")); //$NON-NLS-1$ //$NON-NLS-2$
     345                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     346                                                "seamark:beacon_cardinal:colour", "black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     347                                shape = "2 cones up"; //$NON-NLS-1$
     348                                break;
     349
     350                        case SeaMark.CARD_EAST:
     351                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     352                                                "seamark:beacon_cardinal:category", "east")); //$NON-NLS-1$ //$NON-NLS-2$
     353                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     354                                                "seamark:beacon_cardinal:colour", "black;yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
     355                                shape = "2 cones base together"; //$NON-NLS-1$
     356                                break;
     357
     358                        case SeaMark.CARD_SOUTH:
     359                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     360                                                "seamark:beacon_cardinal:category", "south")); //$NON-NLS-1$ //$NON-NLS-2$
     361                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     362                                                "seamark:beacon_cardinal:colour", "yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
     363                                shape = "2 cones down"; //$NON-NLS-1$
     364                                break;
     365
     366                        case SeaMark.CARD_WEST:
     367                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     368                                                "seamark:beacon_cardinal:category", "west")); //$NON-NLS-1$ //$NON-NLS-2$
     369                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     370                                                "seamark:beacon_cardinal:colour", "yellow;black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     371                                shape = "2 cones point together"; //$NON-NLS-1$
     372                                break;
     373                        }
     374                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     375                                        "seamark:beacon_cardinal:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     376                        break;
     377                case CARD_FLOAT:
     378                        switch (getBuoyIndex()) {
     379                        case SeaMark.CARD_NORTH:
     380                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     381                                                "seamark:light_float:colour", "black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     382                                shape = "2 cones up"; //$NON-NLS-1$
     383                                break;
     384
     385                        case SeaMark.CARD_EAST:
     386                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     387                                                "seamark:light_float:colour", "black;yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
     388                                shape = "2 cones base together"; //$NON-NLS-1$
     389                                break;
     390
     391                        case SeaMark.CARD_SOUTH:
     392                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     393                                                "seamark:light_float:colour", "yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
     394                                shape = "2 cones down"; //$NON-NLS-1$
     395                                break;
     396
     397                        case SeaMark.CARD_WEST:
     398                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     399                                                "seamark:light_float:colour", "yellow;black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     400                                shape = "2 cones point together"; //$NON-NLS-1$
     401                                break;
     402                        }
     403                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     404                                        "seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     405                        break;
     406                }
     407                saveTopMarkData(shape, "black"); //$NON-NLS-1$
     408                saveLightData(); //$NON-NLS-1$
     409                saveRadarFogData();
     410        }
    411411}
  • applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java

    r23268 r23269  
    1717
    1818public class BuoyIsol extends Buoy {
    19     public BuoyIsol(SmpDialogAction dia, Node node) {
    20         super(dia);
    21 
    22         String str;
    23         Map<String, String> keys;
    24         keys = node.getKeys();
    25         setNode(node);
    26 
    27         resetMask();
    28 
    29         dlg.cbM01TypeOfMark.setSelectedIndex(ISOLATED_DANGER);
    30 
    31         dlg.cbM01StyleOfMark.removeAllItems();
    32         dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
    33         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
    34         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
    35         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
    36         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
    37         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
    38         dlg.cbM01StyleOfMark.setVisible(true);
    39         dlg.lM01StyleOfMark.setVisible(true);
    40 
    41         setBuoyIndex(ISOLATED_DANGER);
    42         setColour(SeaMark.BLACK_RED_BLACK);
    43         setLightColour("W"); //$NON-NLS-1$
    44         setTopMark(true);
    45         setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
    46 
    47         if (keys.containsKey("name")) //$NON-NLS-1$
    48             setName(keys.get("name")); //$NON-NLS-1$
    49 
    50         if (keys.containsKey("seamark:name")) //$NON-NLS-1$
    51             setName(keys.get("seamark:name")); //$NON-NLS-1$
    52 
    53         if (keys.containsKey("seamark:buoy_isolated_danger:name")) //$NON-NLS-1$
    54             setName(keys.get("seamark:buoy_isolated_danger:name")); //$NON-NLS-1$
    55         else if (keys.containsKey("seamark:beacon_isolated_danger:name")) //$NON-NLS-1$
    56             setName(keys.get("seamark:beacon_isolated_danger:name")); //$NON-NLS-1$
    57         else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
    58             setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
    59 
    60         if (keys.containsKey("seamark:buoy_isolated_danger:shape")) { //$NON-NLS-1$
    61             str = keys.get("seamark:buoy_isolated_danger:shape"); //$NON-NLS-1$
    62 
    63             if (str.equals("pillar")) //$NON-NLS-1$
    64                 setStyleIndex(ISOL_PILLAR);
    65             else if (str.equals("spar")) //$NON-NLS-1$
    66                 setStyleIndex(ISOL_SPAR);
    67         } else if (keys.containsKey("seamark:beacon_isolated_danger:colour")) { //$NON-NLS-1$
    68             if (keys.containsKey("seamark:beacon_isolated_danger:shape")) { //$NON-NLS-1$
    69                 str = keys.get("seamark:beacon_isolated_danger:shape"); //$NON-NLS-1$
    70 
    71                 if (str.equals("tower")) //$NON-NLS-1$
    72                     setStyleIndex(ISOL_TOWER);
    73                 else
    74                     setStyleIndex(ISOL_BEACON);
    75             } else
    76                 setStyleIndex(ISOL_BEACON);
    77         } else if (keys.containsKey("seamark:type") //$NON-NLS-1$
    78                 && (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
    79             setStyleIndex(CARD_FLOAT);
    80         }
    81 
    82         if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
    83             setStyleIndex(0);
    84         dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
    85 
    86         if (keys.containsKey("seamark:topmark:shape") //$NON-NLS-1$
    87                 || keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
    88             setTopMark(true);
    89         }
    90 
    91         refreshLights();
    92         parseLights(keys);
    93         parseFogRadar(keys);
    94 
    95         dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
    96         dlg.tfM01Name.setText(getName());
    97         dlg.cM01TopMark.setSelected(hasTopMark());
    98     }
    99 
    100     public void refreshLights() {
    101         dlg.cbM01Kennung.removeAllItems();
    102         dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
    103         dlg.cbM01Kennung.addItem("Fl(2)"); //$NON-NLS-1$
    104         dlg.cbM01Kennung.setSelectedIndex(0);
    105     }
    106 
    107     public boolean isValid() {
    108         return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
    109     }
     19        public BuoyIsol(SmpDialogAction dia, Node node) {
     20                super(dia);
     21
     22                String str;
     23                Map<String, String> keys;
     24                keys = node.getKeys();
     25                setNode(node);
     26
     27                resetMask();
     28
     29                dlg.cbM01TypeOfMark.setSelectedIndex(ISOLATED_DANGER);
     30
     31                dlg.cbM01StyleOfMark.removeAllItems();
     32                dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
     33                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
     34                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
     35                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
     36                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
     37                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
     38                dlg.cbM01StyleOfMark.setVisible(true);
     39                dlg.lM01StyleOfMark.setVisible(true);
     40
     41                setBuoyIndex(ISOLATED_DANGER);
     42                setColour(SeaMark.BLACK_RED_BLACK);
     43                setLightColour("W"); //$NON-NLS-1$
     44                setTopMark(true);
     45                setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
     46
     47                if (keys.containsKey("name")) //$NON-NLS-1$
     48                        setName(keys.get("name")); //$NON-NLS-1$
     49
     50                if (keys.containsKey("seamark:name")) //$NON-NLS-1$
     51                        setName(keys.get("seamark:name")); //$NON-NLS-1$
     52
     53                if (keys.containsKey("seamark:buoy_isolated_danger:name")) //$NON-NLS-1$
     54                        setName(keys.get("seamark:buoy_isolated_danger:name")); //$NON-NLS-1$
     55                else if (keys.containsKey("seamark:beacon_isolated_danger:name")) //$NON-NLS-1$
     56                        setName(keys.get("seamark:beacon_isolated_danger:name")); //$NON-NLS-1$
     57                else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
     58                        setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
     59
     60                if (keys.containsKey("seamark:buoy_isolated_danger:shape")) { //$NON-NLS-1$
     61                        str = keys.get("seamark:buoy_isolated_danger:shape"); //$NON-NLS-1$
     62
     63                        if (str.equals("pillar")) //$NON-NLS-1$
     64                                setStyleIndex(ISOL_PILLAR);
     65                        else if (str.equals("spar")) //$NON-NLS-1$
     66                                setStyleIndex(ISOL_SPAR);
     67                } else if (keys.containsKey("seamark:beacon_isolated_danger:colour")) { //$NON-NLS-1$
     68                        if (keys.containsKey("seamark:beacon_isolated_danger:shape")) { //$NON-NLS-1$
     69                                str = keys.get("seamark:beacon_isolated_danger:shape"); //$NON-NLS-1$
     70
     71                                if (str.equals("tower")) //$NON-NLS-1$
     72                                        setStyleIndex(ISOL_TOWER);
     73                                else
     74                                        setStyleIndex(ISOL_BEACON);
     75                        } else
     76                                setStyleIndex(ISOL_BEACON);
     77                } else if (keys.containsKey("seamark:type") //$NON-NLS-1$
     78                                && (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
     79                        setStyleIndex(CARD_FLOAT);
     80                }
     81
     82                if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
     83                        setStyleIndex(0);
     84                dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
     85
     86                if (keys.containsKey("seamark:topmark:shape") //$NON-NLS-1$
     87                                || keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
     88                        setTopMark(true);
     89                }
     90
     91                refreshLights();
     92                parseLights(keys);
     93                parseFogRadar(keys);
     94
     95                dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
     96                dlg.tfM01Name.setText(getName());
     97                dlg.cM01TopMark.setSelected(hasTopMark());
     98        }
     99
     100        public void refreshLights() {
     101                dlg.cbM01Kennung.removeAllItems();
     102                dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
     103                dlg.cbM01Kennung.addItem("Fl(2)"); //$NON-NLS-1$
     104                dlg.cbM01Kennung.setSelectedIndex(0);
     105        }
     106
     107        public boolean isValid() {
     108                return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
     109        }
    110110
    111111        public void setLightColour() {
     
    117117                        return;
    118118
    119         super.paintSign();
    120 
    121         dlg.sM01StatusBar.setText(getErrMsg());
     119                super.paintSign();
     120
     121                dlg.sM01StatusBar.setText(getErrMsg());
    122122
    123123                if (isValid()) {
     
    153153                        }
    154154
    155             String image = "/images/Cardinal"; //$NON-NLS-1$
    156 
    157             switch (getStyleIndex()) {
    158             case ISOL_PILLAR:
    159                 image += "_Pillar_Single"; //$NON-NLS-1$
    160                 break;
    161             case ISOL_SPAR:
    162                 image += "_Spar_Single"; //$NON-NLS-1$
    163                 break;
    164             case ISOL_BEACON:
    165                 image += "_Beacon_Single"; //$NON-NLS-1$
    166                 break;
    167             case ISOL_TOWER:
    168                 image += "_Tower_Single"; //$NON-NLS-1$
    169                 break;
    170             case ISOL_FLOAT:
    171                 image += "_Float_Single"; //$NON-NLS-1$
    172                 break;
    173             default:
    174             }
    175 
    176             if (!image.equals("/images/Cardinal")) { //$NON-NLS-1$
    177                 image += ".png"; //$NON-NLS-1$
    178                 dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
    179             } else
    180                 dlg.lM01Icon.setIcon(null);
    181         } else {
    182             dlg.tfM01Name.setEnabled(false);
    183             dlg.tfM01Name.setText(""); //$NON-NLS-1$
    184             dlg.cM01TopMark.setVisible(false);
    185             dlg.cM01Radar.setVisible(false);
    186             dlg.cM01Racon.setVisible(false);
    187             dlg.cM01Fog.setVisible(false);
    188             dlg.cM01Fired.setVisible(false);
    189         }
    190     }
    191 
    192     public void saveSign() {
    193         Node node = getNode();
    194 
    195         if (node == null) {
    196             return;
    197         }
    198 
    199         switch (getStyleIndex()) {
    200         case ISOL_PILLAR:
    201             super.saveSign("buoy_isolated_danger"); //$NON-NLS-1$
    202             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    203                     "seamark:buoy_isolated_danger:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
    204             break;
    205         case ISOL_SPAR:
    206             super.saveSign("buoy_isolated_danger"); //$NON-NLS-1$
    207             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    208                     "seamark:buoy_isolated_danger:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
    209             break;
    210         case ISOL_BEACON:
    211             super.saveSign("beacon_isolated_danger"); //$NON-NLS-1$
    212             break;
    213         case ISOL_TOWER:
    214             super.saveSign("beacon_isolated_danger"); //$NON-NLS-1$
    215             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    216                     "seamark:beacon_isolated_danger:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
    217             break;
    218         case ISOL_FLOAT:
    219             super.saveSign("light_float"); //$NON-NLS-1$
    220             break;
    221         default:
    222         }
    223 
    224         switch (getStyleIndex()) {
    225         case ISOL_PILLAR:
    226         case ISOL_SPAR:
    227             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    228                     "seamark:buoy_isolated_danger:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    229             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    230                     "seamark:buoy_isolated_danger:colour", "black;red;black")); //$NON-NLS-1$ //$NON-NLS-2$
    231             break;
    232         case ISOL_BEACON:
    233         case ISOL_TOWER:
    234             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    235                     "seamark:beacon_isolated_danger:colour_pattern", //$NON-NLS-1$
    236                     "horizontal stripes")); //$NON-NLS-1$
    237             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    238                     "seamark:beacon_isolated_danger:colour", "black;red;black")); //$NON-NLS-1$ //$NON-NLS-2$
    239             break;
    240         case ISOL_FLOAT:
    241             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    242                     "seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    243             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    244                     "seamark:light_float:colour", "black;red;black")); //$NON-NLS-1$ //$NON-NLS-2$
    245             break;
    246         }
    247 
    248         saveTopMarkData("2 spheres", "black"); //$NON-NLS-1$ //$NON-NLS-2$
    249         saveLightData(); //$NON-NLS-1$
    250         saveRadarFogData();
    251     }
     155                        String image = "/images/Cardinal"; //$NON-NLS-1$
     156
     157                        switch (getStyleIndex()) {
     158                        case ISOL_PILLAR:
     159                                image += "_Pillar_Single"; //$NON-NLS-1$
     160                                break;
     161                        case ISOL_SPAR:
     162                                image += "_Spar_Single"; //$NON-NLS-1$
     163                                break;
     164                        case ISOL_BEACON:
     165                                image += "_Beacon_Single"; //$NON-NLS-1$
     166                                break;
     167                        case ISOL_TOWER:
     168                                image += "_Tower_Single"; //$NON-NLS-1$
     169                                break;
     170                        case ISOL_FLOAT:
     171                                image += "_Float_Single"; //$NON-NLS-1$
     172                                break;
     173                        default:
     174                        }
     175
     176                        if (!image.equals("/images/Cardinal")) { //$NON-NLS-1$
     177                                image += ".png"; //$NON-NLS-1$
     178                                dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
     179                        } else
     180                                dlg.lM01Icon.setIcon(null);
     181                } else {
     182                        dlg.tfM01Name.setEnabled(false);
     183                        dlg.tfM01Name.setText(""); //$NON-NLS-1$
     184                        dlg.cM01TopMark.setVisible(false);
     185                        dlg.cM01Radar.setVisible(false);
     186                        dlg.cM01Racon.setVisible(false);
     187                        dlg.cM01Fog.setVisible(false);
     188                        dlg.cM01Fired.setVisible(false);
     189                }
     190        }
     191
     192        public void saveSign() {
     193                Node node = getNode();
     194
     195                if (node == null) {
     196                        return;
     197                }
     198
     199                switch (getStyleIndex()) {
     200                case ISOL_PILLAR:
     201                        super.saveSign("buoy_isolated_danger"); //$NON-NLS-1$
     202                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     203                                        "seamark:buoy_isolated_danger:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
     204                        break;
     205                case ISOL_SPAR:
     206                        super.saveSign("buoy_isolated_danger"); //$NON-NLS-1$
     207                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     208                                        "seamark:buoy_isolated_danger:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
     209                        break;
     210                case ISOL_BEACON:
     211                        super.saveSign("beacon_isolated_danger"); //$NON-NLS-1$
     212                        break;
     213                case ISOL_TOWER:
     214                        super.saveSign("beacon_isolated_danger"); //$NON-NLS-1$
     215                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     216                                        "seamark:beacon_isolated_danger:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
     217                        break;
     218                case ISOL_FLOAT:
     219                        super.saveSign("light_float"); //$NON-NLS-1$
     220                        break;
     221                default:
     222                }
     223
     224                switch (getStyleIndex()) {
     225                case ISOL_PILLAR:
     226                case ISOL_SPAR:
     227                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     228                                        "seamark:buoy_isolated_danger:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     229                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     230                                        "seamark:buoy_isolated_danger:colour", "black;red;black")); //$NON-NLS-1$ //$NON-NLS-2$
     231                        break;
     232                case ISOL_BEACON:
     233                case ISOL_TOWER:
     234                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     235                                        "seamark:beacon_isolated_danger:colour_pattern", //$NON-NLS-1$
     236                                        "horizontal stripes")); //$NON-NLS-1$
     237                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     238                                        "seamark:beacon_isolated_danger:colour", "black;red;black")); //$NON-NLS-1$ //$NON-NLS-2$
     239                        break;
     240                case ISOL_FLOAT:
     241                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     242                                        "seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     243                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     244                                        "seamark:light_float:colour", "black;red;black")); //$NON-NLS-1$ //$NON-NLS-2$
     245                        break;
     246                }
     247
     248                saveTopMarkData("2 spheres", "black"); //$NON-NLS-1$ //$NON-NLS-2$
     249                saveLightData(); //$NON-NLS-1$
     250                saveRadarFogData();
     251        }
    252252}
  • applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java

    r23268 r23269  
    1616
    1717public class BuoyLat extends Buoy {
    18     public BuoyLat(SmpDialogAction dia, Node node) {
    19         super(dia);
    20 
    21         String str;
    22         Map<String, String> keys;
    23         keys = node.getKeys();
    24         setNode(node);
    25 
    26         resetMask();
    27 
    28         dlg.cbM01CatOfMark.removeAllItems();
    29         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.152")); //$NON-NLS-1$
    30         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.153")); //$NON-NLS-1$
    31         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.154")); //$NON-NLS-1$
    32         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.155")); //$NON-NLS-1$
    33         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.156")); //$NON-NLS-1$
    34 
    35         dlg.rbM01RegionA.setEnabled(true);
    36         dlg.rbM01RegionB.setEnabled(true);
    37         dlg.cbM01CatOfMark.setEnabled(true);
    38         dlg.cbM01CatOfMark.setVisible(true);
    39         dlg.lM01CatOfMark.setVisible(true);
    40 
    41         dlg.cbM01StyleOfMark.removeAllItems();
    42         dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
    43         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
    44         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
    45         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
    46         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
    47         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
    48         dlg.cbM01StyleOfMark.setEnabled(true);
    49 
    50         dlg.cbM01TypeOfMark.setSelectedIndex(LATERAL);
    51 
    52         if (keys.containsKey("name")) //$NON-NLS-1$
    53             setName(keys.get("name")); //$NON-NLS-1$
    54 
    55         if (keys.containsKey("seamark:name")) //$NON-NLS-1$
    56             setName(keys.get("seamark:name")); //$NON-NLS-1$
    57 
    58         if (keys.containsKey("seamark:buoy_lateral:name")) //$NON-NLS-1$
    59             setName(keys.get("seamark:buoy_lateral:name")); //$NON-NLS-1$
    60         else if (keys.containsKey("seamark:beacon_lateral:name")) //$NON-NLS-1$
    61             setName(keys.get("seamark:beacon_lateral:name")); //$NON-NLS-1$
    62         else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
    63             setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
    64 
    65         String cat = ""; //$NON-NLS-1$
    66         String col = ""; //$NON-NLS-1$
    67         String top = ""; //$NON-NLS-1$
    68 
    69         if (getStyleIndex() != LAT_PERCH) {
    70             if (keys.containsKey("seamark:topmark:shape")) { //$NON-NLS-1$
    71                 top = keys.get("seamark:topmark:shape"); //$NON-NLS-1$
    72                 setTopMark(true);
    73             }
    74             if (keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
    75                 setTopMark(true);
    76             }
    77         }
    78 
    79         if (keys.containsKey("seamark:buoy_lateral:colour")) //$NON-NLS-1$
    80             col = keys.get("seamark:buoy_lateral:colour"); //$NON-NLS-1$
    81         else if (keys.containsKey("seamark:beacon_lateral:colour")) //$NON-NLS-1$
    82             col = keys.get("seamark:beacon_lateral:colour"); //$NON-NLS-1$
    83         else if (keys.containsKey("seamark:light_float:colour")) //$NON-NLS-1$
    84             col = keys.get("seamark:light_float:colour"); //$NON-NLS-1$
    85 
    86         if (keys.containsKey("seamark:buoy_lateral:category")) //$NON-NLS-1$
    87             cat = keys.get("seamark:buoy_lateral:category"); //$NON-NLS-1$
    88         else if (keys.containsKey("seamark:beacon_lateral:category")) //$NON-NLS-1$
    89             cat = keys.get("seamark:beacon_lateral:category"); //$NON-NLS-1$
    90 
    91         if (cat.isEmpty()) { //$NON-NLS-1$
    92             if (col.equals("red")) { //$NON-NLS-1$
    93                 setColour(RED);
    94                 if (top.equals("cylinder")) { //$NON-NLS-1$
    95                     setBuoyIndex(PORT_HAND);
    96                     setRegion(IALA_A);
    97                 } else if (top.equals("cone, point up")) { //$NON-NLS-1$
    98                     setBuoyIndex(STARBOARD_HAND);
    99                     setRegion(IALA_B);
    100                 } else {
    101                     if (getRegion() == IALA_A)
    102                         setBuoyIndex(PORT_HAND);
    103                     else
    104                         setBuoyIndex(STARBOARD_HAND);
    105                 }
    106             } else if (col.equals("green")) { //$NON-NLS-1$
    107                 setColour(GREEN);
    108                 if (top.equals("cone, point up")) { //$NON-NLS-1$
    109                     setBuoyIndex(STARBOARD_HAND);
    110                     setRegion(IALA_A);
    111                 } else if (top.equals("cylinder")) { //$NON-NLS-1$
    112                     setBuoyIndex(PORT_HAND);
    113                     setRegion(IALA_B);
    114                 } else {
    115                     if (getRegion() == IALA_A)
    116                         setBuoyIndex(STARBOARD_HAND);
    117                     else
    118                         setBuoyIndex(PORT_HAND);
    119                 }
    120             } else if (col.equals("red;green;red")) { //$NON-NLS-1$
    121                 setColour(RED_GREEN_RED);
    122                 if (top.equals("cylinder")) { //$NON-NLS-1$
    123                     setBuoyIndex(PREF_PORT_HAND);
    124                     setRegion(IALA_A);
    125                 } else if (top.equals("cone, point up")) { //$NON-NLS-1$
    126                     setBuoyIndex(PREF_STARBOARD_HAND);
    127                     setRegion(IALA_B);
    128                 } else {
    129                     if (getRegion() == IALA_A)
    130                         setBuoyIndex(PREF_PORT_HAND);
    131                     else
    132                         setBuoyIndex(PREF_STARBOARD_HAND);
    133                 }
    134             } else if (col.equals("green;red;green")) { //$NON-NLS-1$
    135                 setColour(GREEN_RED_GREEN);
    136                 if (top.equals("cone, point up")) { //$NON-NLS-1$
    137                     setBuoyIndex(PREF_STARBOARD_HAND);
    138                     setRegion(IALA_A);
    139                 } else if (top.equals("cylinder")) { //$NON-NLS-1$
    140                     setBuoyIndex(PREF_PORT_HAND);
    141                     setRegion(IALA_B);
    142                 } else {
    143                     if (getRegion() == IALA_A)
    144                         setBuoyIndex(PREF_STARBOARD_HAND);
    145                     else
    146                         setBuoyIndex(PREF_PORT_HAND);
    147                 }
    148             }
    149         } else if (cat.equals("port")) { //$NON-NLS-1$
    150 
    151             setBuoyIndex(PORT_HAND);
    152 
    153             if (col.equals("red")) { //$NON-NLS-1$
    154                 setRegion(IALA_A);
    155                 setColour(RED);
    156             } else if (col.equals("green")) { //$NON-NLS-1$
    157                 setRegion(IALA_B);
    158                 setColour(GREEN);
    159             } else {
    160                 if (getRegion() == IALA_A)
    161                     setColour(RED);
    162                 else
    163                     setColour(GREEN);
    164             }
    165         } else if (cat.equals("starboard")) { //$NON-NLS-1$
    166 
    167             setBuoyIndex(STARBOARD_HAND);
    168 
    169             if (col.equals("green")) { //$NON-NLS-1$
    170                 setRegion(IALA_A);
    171                 setColour(GREEN);
    172             } else if (col.equals("red")) { //$NON-NLS-1$
    173                 setRegion(IALA_B);
    174                 setColour(RED);
    175             } else {
    176                 if (getRegion() == IALA_A)
    177                     setColour(GREEN);
    178                 else
    179                     setColour(RED);
    180             }
    181         } else if (cat.equals("preferred_channel_port")) { //$NON-NLS-1$
    182 
    183             setBuoyIndex(PREF_PORT_HAND);
    184 
    185             if (col.equals("red;green;red")) { //$NON-NLS-1$
    186                 setRegion(IALA_A);
    187                 setColour(RED_GREEN_RED);
    188             } else if (col.equals("green;red;green")) { //$NON-NLS-1$
    189                 setRegion(IALA_B);
    190                 setColour(GREEN_RED_GREEN);
    191             } else {
    192                 if (getRegion() == IALA_A)
    193                     setColour(RED_GREEN_RED);
    194                 else
    195                     setColour(GREEN_RED_GREEN);
    196             }
    197 
    198         } else if (cat.equals("preferred_channel_starboard")) { //$NON-NLS-1$
    199 
    200             setBuoyIndex(PREF_STARBOARD_HAND);
    201 
    202             if (col.equals("green;red;green")) { //$NON-NLS-1$
    203                 setRegion(IALA_A);
    204                 setColour(GREEN_RED_GREEN);
    205             } else if (col.equals("red;green;red")) { //$NON-NLS-1$
    206                 setRegion(IALA_B);
    207                 setColour(RED_GREEN_RED);
    208             } else {
    209                 if (getRegion() == IALA_A)
    210                     setColour(GREEN_RED_GREEN);
    211                 else
    212                     setColour(RED_GREEN_RED);
    213             }
    214         }
    215 
    216         if (keys.containsKey("seamark:buoy_lateral:shape")) { //$NON-NLS-1$
    217             str = keys.get("seamark:buoy_lateral:shape"); //$NON-NLS-1$
    218 
    219             switch (getBuoyIndex()) {
    220             case PORT_HAND:
    221                 if (str.equals("can")) //$NON-NLS-1$
    222                     setStyleIndex(LAT_CAN);
    223                 else if (str.equals("pillar")) //$NON-NLS-1$
    224                     setStyleIndex(LAT_PILLAR);
    225                 else if (str.equals("spar")) //$NON-NLS-1$
    226                     setStyleIndex(LAT_SPAR);
    227                 break;
    228 
    229             case PREF_PORT_HAND:
    230                 if (str.equals("can")) //$NON-NLS-1$
    231                     setStyleIndex(LAT_CAN);
    232                 else if (str.equals("pillar")) //$NON-NLS-1$
    233                     setStyleIndex(LAT_PILLAR);
    234                 else if (str.equals("spar")) //$NON-NLS-1$
    235                     setStyleIndex(LAT_SPAR);
    236                 break;
    237 
    238             case STARBOARD_HAND:
    239                 if (str.equals("conical")) //$NON-NLS-1$
    240                     setStyleIndex(LAT_CONE);
    241                 else if (str.equals("pillar")) //$NON-NLS-1$
    242                     setStyleIndex(LAT_PILLAR);
    243                 else if (str.equals("spar")) //$NON-NLS-1$
    244                     setStyleIndex(LAT_SPAR);
    245                 break;
    246 
    247             case PREF_STARBOARD_HAND:
    248                 if (str.equals("conical")) //$NON-NLS-1$
    249                     setStyleIndex(LAT_CONE);
    250                 else if (str.equals("pillar")) //$NON-NLS-1$
    251                     setStyleIndex(LAT_PILLAR);
    252                 else if (str.equals("spar")) //$NON-NLS-1$
    253                     setStyleIndex(LAT_SPAR);
    254                 break;
    255             }
    256         } else if (keys.containsKey("seamark:beacon_lateral:shape")) { //$NON-NLS-1$
    257             str = keys.get("seamark:beacon_lateral:shape"); //$NON-NLS-1$
    258             if (str.equals("tower")) //$NON-NLS-1$
    259                 setStyleIndex(LAT_TOWER);
    260             else if (str.equals("perch")) //$NON-NLS-1$
    261                 setStyleIndex(LAT_PERCH);
    262             else
    263                 setStyleIndex(LAT_BEACON);
    264         } else if (keys.containsKey("seamark:type") //$NON-NLS-1$
    265                 && (keys.get("seamark:type").equals("beacon_lateral"))) { //$NON-NLS-1$ //$NON-NLS-2$
    266             setStyleIndex(LAT_BEACON);
    267         } else if (keys.containsKey("seamark:type") //$NON-NLS-1$
    268                 && (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
    269             setStyleIndex(LAT_FLOAT);
    270         }
    271 
    272         refreshStyles();
    273         refreshLights();
    274         setLightColour();
    275         parseLights(keys);
    276         parseFogRadar(keys);
    277 
    278         dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
    279         dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
    280         dlg.tfM01Name.setText(getName());
    281         dlg.cM01TopMark.setSelected(hasTopMark());
    282     }
    283 
    284     public void refreshStyles() {
    285         int type = getBuoyIndex();
    286         int style = getStyleIndex();
    287 
    288         dlg.cbM01StyleOfMark.removeAllItems();
    289         dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.213")); //$NON-NLS-1$
    290 
    291         switch (type) {
    292         case PORT_HAND:
    293             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
    294             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
    295             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
    296             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
    297             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
    298             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
    299             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.10")); //$NON-NLS-1$
    300             break;
    301         case STARBOARD_HAND:
    302             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
    303             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
    304             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
    305             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
    306             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
    307             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
    308             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.10")); //$NON-NLS-1$
    309             break;
    310         case PREF_PORT_HAND:
    311             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
    312             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
    313             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
    314             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
    315             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
    316             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
    317             break;
    318         case PREF_STARBOARD_HAND:
    319             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
    320             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
    321             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
    322             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
    323             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
    324             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
    325             break;
     18        public BuoyLat(SmpDialogAction dia, Node node) {
     19                super(dia);
     20
     21                String str;
     22                Map<String, String> keys;
     23                keys = node.getKeys();
     24                setNode(node);
     25
     26                resetMask();
     27
     28                dlg.cbM01CatOfMark.removeAllItems();
     29                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.152")); //$NON-NLS-1$
     30                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.153")); //$NON-NLS-1$
     31                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.154")); //$NON-NLS-1$
     32                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.155")); //$NON-NLS-1$
     33                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.156")); //$NON-NLS-1$
     34
     35                dlg.rbM01RegionA.setEnabled(true);
     36                dlg.rbM01RegionB.setEnabled(true);
     37                dlg.cbM01CatOfMark.setEnabled(true);
     38                dlg.cbM01CatOfMark.setVisible(true);
     39                dlg.lM01CatOfMark.setVisible(true);
     40
     41                dlg.cbM01StyleOfMark.removeAllItems();
     42                dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
     43                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
     44                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
     45                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
     46                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
     47                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
     48                dlg.cbM01StyleOfMark.setEnabled(true);
     49
     50                dlg.cbM01TypeOfMark.setSelectedIndex(LATERAL);
     51
     52                if (keys.containsKey("name")) //$NON-NLS-1$
     53                        setName(keys.get("name")); //$NON-NLS-1$
     54
     55                if (keys.containsKey("seamark:name")) //$NON-NLS-1$
     56                        setName(keys.get("seamark:name")); //$NON-NLS-1$
     57
     58                if (keys.containsKey("seamark:buoy_lateral:name")) //$NON-NLS-1$
     59                        setName(keys.get("seamark:buoy_lateral:name")); //$NON-NLS-1$
     60                else if (keys.containsKey("seamark:beacon_lateral:name")) //$NON-NLS-1$
     61                        setName(keys.get("seamark:beacon_lateral:name")); //$NON-NLS-1$
     62                else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
     63                        setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
     64
     65                String cat = ""; //$NON-NLS-1$
     66                String col = ""; //$NON-NLS-1$
     67                String top = ""; //$NON-NLS-1$
     68
     69                if (getStyleIndex() != LAT_PERCH) {
     70                        if (keys.containsKey("seamark:topmark:shape")) { //$NON-NLS-1$
     71                                top = keys.get("seamark:topmark:shape"); //$NON-NLS-1$
     72                                setTopMark(true);
     73                        }
     74                        if (keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
     75                                setTopMark(true);
     76                        }
    32677                }
    32778
    328         if (style >= dlg.cbM01StyleOfMark.getItemCount())
    329             style = 0;
    330         setStyleIndex(style);
    331         dlg.cbM01StyleOfMark.setSelectedIndex(style);
    332         dlg.cbM01StyleOfMark.setVisible(true);
    333         dlg.lM01StyleOfMark.setVisible(true);
    334     }
     79                if (keys.containsKey("seamark:buoy_lateral:colour")) //$NON-NLS-1$
     80                        col = keys.get("seamark:buoy_lateral:colour"); //$NON-NLS-1$
     81                else if (keys.containsKey("seamark:beacon_lateral:colour")) //$NON-NLS-1$
     82                        col = keys.get("seamark:beacon_lateral:colour"); //$NON-NLS-1$
     83                else if (keys.containsKey("seamark:light_float:colour")) //$NON-NLS-1$
     84                        col = keys.get("seamark:light_float:colour"); //$NON-NLS-1$
     85
     86                if (keys.containsKey("seamark:buoy_lateral:category")) //$NON-NLS-1$
     87                        cat = keys.get("seamark:buoy_lateral:category"); //$NON-NLS-1$
     88                else if (keys.containsKey("seamark:beacon_lateral:category")) //$NON-NLS-1$
     89                        cat = keys.get("seamark:beacon_lateral:category"); //$NON-NLS-1$
     90
     91                if (cat.isEmpty()) { //$NON-NLS-1$
     92                        if (col.equals("red")) { //$NON-NLS-1$
     93                                setColour(RED);
     94                                if (top.equals("cylinder")) { //$NON-NLS-1$
     95                                        setBuoyIndex(PORT_HAND);
     96                                        setRegion(IALA_A);
     97                                } else if (top.equals("cone, point up")) { //$NON-NLS-1$
     98                                        setBuoyIndex(STARBOARD_HAND);
     99                                        setRegion(IALA_B);
     100                                } else {
     101                                        if (getRegion() == IALA_A)
     102                                                setBuoyIndex(PORT_HAND);
     103                                        else
     104                                                setBuoyIndex(STARBOARD_HAND);
     105                                }
     106                        } else if (col.equals("green")) { //$NON-NLS-1$
     107                                setColour(GREEN);
     108                                if (top.equals("cone, point up")) { //$NON-NLS-1$
     109                                        setBuoyIndex(STARBOARD_HAND);
     110                                        setRegion(IALA_A);
     111                                } else if (top.equals("cylinder")) { //$NON-NLS-1$
     112                                        setBuoyIndex(PORT_HAND);
     113                                        setRegion(IALA_B);
     114                                } else {
     115                                        if (getRegion() == IALA_A)
     116                                                setBuoyIndex(STARBOARD_HAND);
     117                                        else
     118                                                setBuoyIndex(PORT_HAND);
     119                                }
     120                        } else if (col.equals("red;green;red")) { //$NON-NLS-1$
     121                                setColour(RED_GREEN_RED);
     122                                if (top.equals("cylinder")) { //$NON-NLS-1$
     123                                        setBuoyIndex(PREF_PORT_HAND);
     124                                        setRegion(IALA_A);
     125                                } else if (top.equals("cone, point up")) { //$NON-NLS-1$
     126                                        setBuoyIndex(PREF_STARBOARD_HAND);
     127                                        setRegion(IALA_B);
     128                                } else {
     129                                        if (getRegion() == IALA_A)
     130                                                setBuoyIndex(PREF_PORT_HAND);
     131                                        else
     132                                                setBuoyIndex(PREF_STARBOARD_HAND);
     133                                }
     134                        } else if (col.equals("green;red;green")) { //$NON-NLS-1$
     135                                setColour(GREEN_RED_GREEN);
     136                                if (top.equals("cone, point up")) { //$NON-NLS-1$
     137                                        setBuoyIndex(PREF_STARBOARD_HAND);
     138                                        setRegion(IALA_A);
     139                                } else if (top.equals("cylinder")) { //$NON-NLS-1$
     140                                        setBuoyIndex(PREF_PORT_HAND);
     141                                        setRegion(IALA_B);
     142                                } else {
     143                                        if (getRegion() == IALA_A)
     144                                                setBuoyIndex(PREF_STARBOARD_HAND);
     145                                        else
     146                                                setBuoyIndex(PREF_PORT_HAND);
     147                                }
     148                        }
     149                } else if (cat.equals("port")) { //$NON-NLS-1$
     150
     151                        setBuoyIndex(PORT_HAND);
     152
     153                        if (col.equals("red")) { //$NON-NLS-1$
     154                                setRegion(IALA_A);
     155                                setColour(RED);
     156                        } else if (col.equals("green")) { //$NON-NLS-1$
     157                                setRegion(IALA_B);
     158                                setColour(GREEN);
     159                        } else {
     160                                if (getRegion() == IALA_A)
     161                                        setColour(RED);
     162                                else
     163                                        setColour(GREEN);
     164                        }
     165                } else if (cat.equals("starboard")) { //$NON-NLS-1$
     166
     167                        setBuoyIndex(STARBOARD_HAND);
     168
     169                        if (col.equals("green")) { //$NON-NLS-1$
     170                                setRegion(IALA_A);
     171                                setColour(GREEN);
     172                        } else if (col.equals("red")) { //$NON-NLS-1$
     173                                setRegion(IALA_B);
     174                                setColour(RED);
     175                        } else {
     176                                if (getRegion() == IALA_A)
     177                                        setColour(GREEN);
     178                                else
     179                                        setColour(RED);
     180                        }
     181                } else if (cat.equals("preferred_channel_port")) { //$NON-NLS-1$
     182
     183                        setBuoyIndex(PREF_PORT_HAND);
     184
     185                        if (col.equals("red;green;red")) { //$NON-NLS-1$
     186                                setRegion(IALA_A);
     187                                setColour(RED_GREEN_RED);
     188                        } else if (col.equals("green;red;green")) { //$NON-NLS-1$
     189                                setRegion(IALA_B);
     190                                setColour(GREEN_RED_GREEN);
     191                        } else {
     192                                if (getRegion() == IALA_A)
     193                                        setColour(RED_GREEN_RED);
     194                                else
     195                                        setColour(GREEN_RED_GREEN);
     196                        }
     197
     198                } else if (cat.equals("preferred_channel_starboard")) { //$NON-NLS-1$
     199
     200                        setBuoyIndex(PREF_STARBOARD_HAND);
     201
     202                        if (col.equals("green;red;green")) { //$NON-NLS-1$
     203                                setRegion(IALA_A);
     204                                setColour(GREEN_RED_GREEN);
     205                        } else if (col.equals("red;green;red")) { //$NON-NLS-1$
     206                                setRegion(IALA_B);
     207                                setColour(RED_GREEN_RED);
     208                        } else {
     209                                if (getRegion() == IALA_A)
     210                                        setColour(GREEN_RED_GREEN);
     211                                else
     212                                        setColour(RED_GREEN_RED);
     213                        }
     214                }
     215
     216                if (keys.containsKey("seamark:buoy_lateral:shape")) { //$NON-NLS-1$
     217                        str = keys.get("seamark:buoy_lateral:shape"); //$NON-NLS-1$
     218
     219                        switch (getBuoyIndex()) {
     220                        case PORT_HAND:
     221                                if (str.equals("can")) //$NON-NLS-1$
     222                                        setStyleIndex(LAT_CAN);
     223                                else if (str.equals("pillar")) //$NON-NLS-1$
     224                                        setStyleIndex(LAT_PILLAR);
     225                                else if (str.equals("spar")) //$NON-NLS-1$
     226                                        setStyleIndex(LAT_SPAR);
     227                                break;
     228
     229                        case PREF_PORT_HAND:
     230                                if (str.equals("can")) //$NON-NLS-1$
     231                                        setStyleIndex(LAT_CAN);
     232                                else if (str.equals("pillar")) //$NON-NLS-1$
     233                                        setStyleIndex(LAT_PILLAR);
     234                                else if (str.equals("spar")) //$NON-NLS-1$
     235                                        setStyleIndex(LAT_SPAR);
     236                                break;
     237
     238                        case STARBOARD_HAND:
     239                                if (str.equals("conical")) //$NON-NLS-1$
     240                                        setStyleIndex(LAT_CONE);
     241                                else if (str.equals("pillar")) //$NON-NLS-1$
     242                                        setStyleIndex(LAT_PILLAR);
     243                                else if (str.equals("spar")) //$NON-NLS-1$
     244                                        setStyleIndex(LAT_SPAR);
     245                                break;
     246
     247                        case PREF_STARBOARD_HAND:
     248                                if (str.equals("conical")) //$NON-NLS-1$
     249                                        setStyleIndex(LAT_CONE);
     250                                else if (str.equals("pillar")) //$NON-NLS-1$
     251                                        setStyleIndex(LAT_PILLAR);
     252                                else if (str.equals("spar")) //$NON-NLS-1$
     253                                        setStyleIndex(LAT_SPAR);
     254                                break;
     255                        }
     256                } else if (keys.containsKey("seamark:beacon_lateral:shape")) { //$NON-NLS-1$
     257                        str = keys.get("seamark:beacon_lateral:shape"); //$NON-NLS-1$
     258                        if (str.equals("tower")) //$NON-NLS-1$
     259                                setStyleIndex(LAT_TOWER);
     260                        else if (str.equals("perch")) //$NON-NLS-1$
     261                                setStyleIndex(LAT_PERCH);
     262                        else
     263                                setStyleIndex(LAT_BEACON);
     264                } else if (keys.containsKey("seamark:type") //$NON-NLS-1$
     265                                && (keys.get("seamark:type").equals("beacon_lateral"))) { //$NON-NLS-1$ //$NON-NLS-2$
     266                        setStyleIndex(LAT_BEACON);
     267                } else if (keys.containsKey("seamark:type") //$NON-NLS-1$
     268                                && (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
     269                        setStyleIndex(LAT_FLOAT);
     270                }
     271
     272                refreshStyles();
     273                refreshLights();
     274                setLightColour();
     275                parseLights(keys);
     276                parseFogRadar(keys);
     277
     278                dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
     279                dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
     280                dlg.tfM01Name.setText(getName());
     281                dlg.cM01TopMark.setSelected(hasTopMark());
     282        }
     283
     284        public void refreshStyles() {
     285                int type = getBuoyIndex();
     286                int style = getStyleIndex();
     287
     288                dlg.cbM01StyleOfMark.removeAllItems();
     289                dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.213")); //$NON-NLS-1$
     290
     291                switch (type) {
     292                case PORT_HAND:
     293                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
     294                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
     295                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
     296                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
     297                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
     298                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
     299                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.10")); //$NON-NLS-1$
     300                        break;
     301                case STARBOARD_HAND:
     302                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
     303                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
     304                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
     305                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
     306                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
     307                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
     308                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.10")); //$NON-NLS-1$
     309                        break;
     310                case PREF_PORT_HAND:
     311                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
     312                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
     313                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
     314                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
     315                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
     316                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
     317                        break;
     318                case PREF_STARBOARD_HAND:
     319                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
     320                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
     321                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
     322                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
     323                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
     324                        dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
     325                        break;
     326                }
     327
     328                if (style >= dlg.cbM01StyleOfMark.getItemCount())
     329                        style = 0;
     330                setStyleIndex(style);
     331                dlg.cbM01StyleOfMark.setSelectedIndex(style);
     332                dlg.cbM01StyleOfMark.setVisible(true);
     333                dlg.lM01StyleOfMark.setVisible(true);
     334        }
    335335
    336336        public void refreshLights() {
     
    361361                super.paintSign();
    362362
    363         dlg.sM01StatusBar.setText(getErrMsg());
    364 
    365         if (isValid()) {
    366             dlg.tfM01Name.setEnabled(true);
    367             dlg.tfM01Name.setText(getName());
     363                dlg.sM01StatusBar.setText(getErrMsg());
     364
     365                if (isValid()) {
     366                        dlg.tfM01Name.setEnabled(true);
     367                        dlg.tfM01Name.setText(getName());
    368368
    369369                        boolean region = getRegion();
     
    413413                        }
    414414
    415             String image = "/images/Lateral"; //$NON-NLS-1$
    416 
    417             switch (getBuoyIndex()) {
    418             case PORT_HAND:
    419                 if (region == IALA_A)
    420                     switch (style) {
    421                     case LAT_CAN:
    422                         image += "_Can_Red"; //$NON-NLS-1$
    423                         break;
    424                     case LAT_PILLAR:
    425                         image += "_Pillar_Red"; //$NON-NLS-1$
    426                         break;
    427                     case LAT_SPAR:
    428                         image += "_Spar_Red"; //$NON-NLS-1$
    429                         break;
    430                     case LAT_BEACON:
    431                         image += "_Beacon_Red"; //$NON-NLS-1$
    432                         break;
    433                     case LAT_TOWER:
    434                         image += "_Tower_Red"; //$NON-NLS-1$
    435                         break;
    436                     case LAT_FLOAT:
    437                         image += "_Float_Red"; //$NON-NLS-1$
    438                         break;
    439                     case LAT_PERCH:
    440                         image += "_Perch_Port"; //$NON-NLS-1$
    441                         break;
    442                     default:
    443                     }
    444                 else
    445                     switch (style) {
    446                     case LAT_CAN:
    447                         image += "_Can_Green"; //$NON-NLS-1$
    448                         break;
    449                     case LAT_PILLAR:
    450                         image += "_Pillar_Green"; //$NON-NLS-1$
    451                         break;
    452                     case LAT_SPAR:
    453                         image += "_Spar_Green"; //$NON-NLS-1$
    454                         break;
    455                     case LAT_BEACON:
    456                         image += "_Beacon_Green"; //$NON-NLS-1$
    457                         break;
    458                     case LAT_TOWER:
    459                         image += "_Tower_Green"; //$NON-NLS-1$
    460                         break;
    461                     case LAT_FLOAT:
    462                         image += "_Float_Green"; //$NON-NLS-1$
    463                         break;
    464                     case LAT_PERCH:
    465                         image += "_Perch_Port"; //$NON-NLS-1$
    466                         break;
    467                     default:
    468                     }
    469                 break;
    470 
    471             case STARBOARD_HAND:
    472                 if (region == IALA_A)
    473                     switch (style) {
    474                     case LAT_CONE:
    475                         image += "_Cone_Green"; //$NON-NLS-1$
    476                         break;
    477                     case LAT_PILLAR:
    478                         image += "_Pillar_Green"; //$NON-NLS-1$
    479                         break;
    480                     case LAT_SPAR:
    481                         image += "_Spar_Green"; //$NON-NLS-1$
    482                         break;
    483                     case LAT_BEACON:
    484                         image += "_Beacon_Green"; //$NON-NLS-1$
    485                         break;
    486                     case LAT_TOWER:
    487                         image += "_Tower_Green"; //$NON-NLS-1$
    488                         break;
    489                     case LAT_FLOAT:
    490                         image += "_Float_Green"; //$NON-NLS-1$
    491                         break;
    492                     case LAT_PERCH:
    493                         image += "_Perch_Starboard"; //$NON-NLS-1$
    494                         break;
    495                     default:
    496                     }
    497                 else
    498                     switch (style) {
    499                     case LAT_CONE:
    500                         image += "_Cone_Red"; //$NON-NLS-1$
    501                         break;
    502                     case LAT_PILLAR:
    503                         image += "_Pillar_Red"; //$NON-NLS-1$
    504                         break;
    505                     case LAT_SPAR:
    506                         image += "_Spar_Red"; //$NON-NLS-1$
    507                         break;
    508                     case LAT_BEACON:
    509                         image += "_Beacon_Red"; //$NON-NLS-1$
    510                         break;
    511                     case LAT_TOWER:
    512                         image += "_Tower_Red"; //$NON-NLS-1$
    513                         break;
    514                     case LAT_FLOAT:
    515                         image += "_Float_Red"; //$NON-NLS-1$
    516                         break;
    517                     case LAT_PERCH:
    518                         image += "_Perch_Starboard"; //$NON-NLS-1$
    519                         break;
    520                     default:
    521                     }
    522                 break;
    523 
    524             case PREF_PORT_HAND:
    525                 if (region == IALA_A)
    526                     switch (style) {
    527                     case LAT_CAN:
    528                         image += "_Can_Red_Green_Red"; //$NON-NLS-1$
    529                         break;
    530                     case LAT_PILLAR:
    531                         image += "_Pillar_Red_Green_Red"; //$NON-NLS-1$
    532                         break;
    533                     case LAT_SPAR:
    534                         image += "_Spar_Red_Green_Red"; //$NON-NLS-1$
    535                         break;
    536                     case LAT_BEACON:
    537                         image += "_Beacon_Red_Green_Red"; //$NON-NLS-1$
    538                         break;
    539                     case LAT_TOWER:
    540                         image += "_Tower_Red_Green_Red"; //$NON-NLS-1$
    541                         break;
    542                     case LAT_FLOAT:
    543                         image += "_Float_Red_Green_Red"; //$NON-NLS-1$
    544                         break;
    545                     default:
    546                     }
    547                 else
    548                     switch (style) {
    549                     case LAT_CAN:
    550                         image += "_Can_Green_Red_Green"; //$NON-NLS-1$
    551                         break;
    552                     case LAT_PILLAR:
    553                         image += "_Pillar_Green_Red_Green"; //$NON-NLS-1$
    554                         break;
    555                     case LAT_SPAR:
    556                         image += "_Spar_Green_Red_Green"; //$NON-NLS-1$
    557                         break;
    558                     case LAT_BEACON:
    559                         image += "_Beacon_Green_Red_Green"; //$NON-NLS-1$
    560                         break;
    561                     case LAT_TOWER:
    562                         image += "_Tower_Green_Red_Green"; //$NON-NLS-1$
    563                         break;
    564                     case LAT_FLOAT:
    565                         image += "_Float_Green_Red_Green"; //$NON-NLS-1$
    566                         break;
    567                     default:
    568                     }
    569                 break;
    570 
    571             case PREF_STARBOARD_HAND:
    572                 if (region == IALA_A)
    573                     switch (style) {
    574                     case LAT_CONE:
    575                         image += "_Cone_Green_Red_Green"; //$NON-NLS-1$
    576                         break;
    577                     case LAT_PILLAR:
    578                         image += "_Pillar_Green_Red_Green"; //$NON-NLS-1$
    579                         break;
    580                     case LAT_SPAR:
    581                         image += "_Spar_Green_Red_Green"; //$NON-NLS-1$
    582                         break;
    583                     case LAT_BEACON:
    584                         image += "_Beacon_Green_Red_Green"; //$NON-NLS-1$
    585                         break;
    586                     case LAT_TOWER:
    587                         image += "_Tower_Green_Red_Green"; //$NON-NLS-1$
    588                         break;
    589                     case LAT_FLOAT:
    590                         image += "_Float_Green_Red_Green"; //$NON-NLS-1$
    591                         break;
    592                     default:
    593                     }
    594                 else
    595                     switch (style) {
    596                     case LAT_CONE:
    597                         image += "_Cone_Red_Green_Red"; //$NON-NLS-1$
    598                         break;
    599                     case LAT_PILLAR:
    600                         image += "_Pillar_Red_Green_Red"; //$NON-NLS-1$
    601                         break;
    602                     case LAT_SPAR:
    603                         image += "_Spar_Red_Green_Red"; //$NON-NLS-1$
    604                         break;
    605                     case LAT_BEACON:
    606                         image += "_Beacon_Red_Green_Red"; //$NON-NLS-1$
    607                         break;
    608                     case LAT_TOWER:
    609                         image += "_Tower_Red_Green_Red"; //$NON-NLS-1$
    610                         break;
    611                     case LAT_FLOAT:
    612                         image += "_Float_Red_Green_Red"; //$NON-NLS-1$
    613                         break;
    614                     default:
    615                     }
    616                 break;
    617 
    618             default:
    619             }
    620 
    621             if (!image.equals("/images/Lateral")) { //$NON-NLS-1$
    622 
    623                 image += ".png"; //$NON-NLS-1$
    624                 dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
    625 
    626                 if (hasTopMark()) {
    627                     image = "";
    628                     switch (getBuoyIndex()) {
    629                     case PORT_HAND:
    630                     case PREF_PORT_HAND:
    631                         if (region == IALA_A)
    632                             switch (style) {
    633                             case LAT_CAN:
    634                                 image = "/images/Top_Can_Red_Buoy_Small.png"; //$NON-NLS-1$
    635                                 break;
    636                             case LAT_PILLAR:
    637                             case LAT_SPAR:
    638                                 image = "/images/Top_Can_Red_Buoy.png"; //$NON-NLS-1$
    639                                 break;
    640                             case LAT_BEACON:
    641                             case LAT_TOWER:
    642                                 image = "/images/Top_Can_Red_Beacon.png"; //$NON-NLS-1$
    643                                 break;
    644                             case LAT_FLOAT:
    645                                 image = "/images/Top_Can_Red_Float.png"; //$NON-NLS-1$
    646                                 break;
    647                             }
    648                         else
    649                             switch (style) {
    650                             case LAT_CAN:
    651                                 image = "/images/Top_Can_Green_Buoy_Small.png"; //$NON-NLS-1$
    652                                 break;
    653                             case LAT_PILLAR:
    654                             case LAT_SPAR:
    655                                 image = "/images/Top_Can_Green_Buoy.png"; //$NON-NLS-1$
    656                                 break;
    657                             case LAT_BEACON:
    658                             case LAT_TOWER:
    659                                 image = "/images/Top_Can_Green_Beacon.png"; //$NON-NLS-1$
    660                                 break;
    661                             case LAT_FLOAT:
    662                                 image = "/images/Top_Can_Green_Float.png"; //$NON-NLS-1$
    663                                 break;
    664                             }
    665                         break;
    666 
    667                     case STARBOARD_HAND:
    668                     case PREF_STARBOARD_HAND:
    669                         if (region == IALA_A)
    670                             switch (style) {
    671                             case LAT_CONE:
    672                                 image = "/images/Top_Cone_Green_Buoy_Small.png"; //$NON-NLS-1$
    673                                 break;
    674                             case LAT_PILLAR:
    675                             case LAT_SPAR:
    676                                 image = "/images/Top_Cone_Green_Buoy.png"; //$NON-NLS-1$
    677                                 break;
    678                             case LAT_BEACON:
    679                             case LAT_TOWER:
    680                                 image = "/images/Top_Cone_Green_Beacon.png"; //$NON-NLS-1$
    681                                 break;
    682                             case LAT_FLOAT:
    683                                 image = "/images/Top_Cone_Green_Float.png"; //$NON-NLS-1$
    684                                 break;
    685                             }
    686                         else
    687                             switch (style) {
    688                             case LAT_CONE:
    689                                 image = "/images/Top_Cone_Red_Buoy_Small.png"; //$NON-NLS-1$
    690                                 break;
    691                             case LAT_PILLAR:
    692                             case LAT_SPAR:
    693                                 image = "/images/Top_Cone_Red_Buoy.png"; //$NON-NLS-1$
    694                                 break;
    695                             case LAT_BEACON:
    696                             case LAT_TOWER:
    697                                 image = "/images/Top_Cone_Red_Beacon.png"; //$NON-NLS-1$
    698                                 break;
    699                             case LAT_FLOAT:
    700                                 image = "/images/Top_Cone_Red_Float.png"; //$NON-NLS-1$
    701                                 break;
    702                             }
    703                         break;
    704                     }
    705                     if (!image.isEmpty())
    706                         dlg.lM06Icon.setIcon(new ImageIcon(getClass().getResource(image)));
    707                 }
    708             } else
    709                 dlg.lM01Icon.setIcon(null);
    710         }
    711     }
    712 
    713     public void saveSign() {
    714         Node node = getNode();
    715 
    716         if (node == null) {
    717             return;
    718         }
    719 
    720         int cat = getBuoyIndex();
    721         String shape = ""; //$NON-NLS-1$
    722         String colour = ""; //$NON-NLS-1$
    723 
    724         switch (cat) {
    725 
    726         case PORT_HAND:
    727             switch (getStyleIndex()) {
    728             case LAT_CAN:
    729                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    730                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    731                         "seamark:buoy_lateral:shape", "can")); //$NON-NLS-1$ //$NON-NLS-2$
    732                 break;
    733             case LAT_PILLAR:
    734                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    735                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    736                         "seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
    737                 break;
    738             case LAT_SPAR:
    739                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    740                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    741                         "seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
    742                 break;
    743             case LAT_BEACON:
    744                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    745                 break;
    746             case LAT_TOWER:
    747                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    748                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    749                         "seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
    750                 break;
    751             case LAT_FLOAT:
    752                 super.saveSign("light_float"); //$NON-NLS-1$
    753                 break;
    754             case LAT_PERCH:
    755                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    756                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    757                         "seamark:beacon_lateral:shape", "perch")); //$NON-NLS-1$ //$NON-NLS-2$
    758                 break;
    759             default:
    760             }
    761             switch (getStyleIndex()) {
    762             case LAT_CAN:
    763             case LAT_PILLAR:
    764             case LAT_SPAR:
    765                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    766                         "seamark:buoy_lateral:category", "port")); //$NON-NLS-1$ //$NON-NLS-2$
    767                 if (getRegion() == IALA_A) {
    768                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    769                             "seamark:buoy_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
    770                     colour = "red"; //$NON-NLS-1$
    771                 } else {
    772                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    773                             "seamark:buoy_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
    774                     colour = "green"; //$NON-NLS-1$
    775                 }
    776                 break;
    777             case LAT_PERCH:
    778                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    779                         "seamark:beacon_lateral:category", "port")); //$NON-NLS-1$ //$NON-NLS-2$
    780                 break;
    781             case LAT_BEACON:
    782             case LAT_TOWER:
    783                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    784                         "seamark:beacon_lateral:category", "port")); //$NON-NLS-1$ //$NON-NLS-2$
    785                 if (getRegion() == IALA_A) {
    786                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    787                             "seamark:beacon_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
    788                     colour = "red"; //$NON-NLS-1$
    789                 } else {
    790                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    791                             "seamark:beacon_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
    792                     colour = "green"; //$NON-NLS-1$
    793                 }
    794                 break;
    795             case LAT_FLOAT:
    796                 if (getRegion() == IALA_A) {
    797                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    798                             "seamark:light_float:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
    799                     colour = "red"; //$NON-NLS-1$
    800                 } else {
    801                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    802                             "seamark:light_float:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
    803                     colour = "green"; //$NON-NLS-1$
    804                 }
    805                 break;
    806             }
    807             shape = "cylinder"; //$NON-NLS-1$
    808             break;
    809 
    810         case PREF_PORT_HAND:
    811             switch (getStyleIndex()) {
    812             case LAT_CAN:
    813                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    814                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    815                         "seamark:buoy_lateral:shape", "can")); //$NON-NLS-1$ //$NON-NLS-2$
    816                 break;
    817             case LAT_PILLAR:
    818                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    819                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    820                         "seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
    821                 break;
    822             case LAT_SPAR:
    823                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    824                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    825                         "seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
    826                 break;
    827             case LAT_BEACON:
    828                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    829                 break;
    830             case LAT_TOWER:
    831                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    832                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    833                         "seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
    834                 break;
    835             case LAT_FLOAT:
    836                 super.saveSign("light_float"); //$NON-NLS-1$
    837                 break;
    838             default:
    839             }
    840             switch (getStyleIndex()) {
    841             case LAT_CAN:
    842             case LAT_PILLAR:
    843             case LAT_SPAR:
    844                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    845                         "seamark:buoy_lateral:category", "preferred_channel_port")); //$NON-NLS-1$ //$NON-NLS-2$
    846                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    847                         "seamark:buoy_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    848                 if (getRegion() == IALA_A) {
    849                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    850                             "seamark:buoy_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
    851                     colour = "red"; //$NON-NLS-1$
    852                 } else {
    853                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    854                             "seamark:buoy_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
    855                     colour = "green"; //$NON-NLS-1$
    856                 }
    857                 break;
    858             case LAT_BEACON:
    859             case LAT_TOWER:
    860                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    861                         "seamark:beacon_lateral:category", "preferred_channel_port")); //$NON-NLS-1$ //$NON-NLS-2$
    862                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    863                         "seamark:beacon_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    864                 if (getRegion() == IALA_A) {
    865                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    866                             "seamark:beacon_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
    867                     colour = "red"; //$NON-NLS-1$
    868                 } else {
    869                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    870                             "seamark:beacon_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
    871                     colour = "green"; //$NON-NLS-1$
    872                 }
    873                 break;
    874             case LAT_FLOAT:
    875                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    876                         "seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    877                 if (getRegion() == IALA_A) {
    878                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    879                             "seamark:light_float:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
    880                     colour = "red"; //$NON-NLS-1$
    881                 } else {
    882                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    883                             "seamark:light_float:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
    884                     colour = "green"; //$NON-NLS-1$
    885                 }
    886                 break;
    887             }
    888             shape = "cylinder"; //$NON-NLS-1$
    889             break;
    890 
    891         case STARBOARD_HAND:
    892             switch (getStyleIndex()) {
    893             case LAT_CONE:
    894                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    895                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    896                         "seamark:buoy_lateral:shape", "conical")); //$NON-NLS-1$ //$NON-NLS-2$
    897                 break;
    898             case LAT_PILLAR:
    899                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    900                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    901                         "seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
    902                 break;
    903             case LAT_SPAR:
    904                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    905                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    906                         "seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
    907                 break;
    908             case LAT_BEACON:
    909                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    910                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    911                         "seamark:beacon_lateral:shape", "stake")); //$NON-NLS-1$ //$NON-NLS-2$
    912                 break;
    913             case LAT_TOWER:
    914                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    915                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    916                         "seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
    917                 break;
    918             case LAT_FLOAT:
    919                 super.saveSign("light_float"); //$NON-NLS-1$
    920                 break;
    921             case LAT_PERCH:
    922                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    923                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    924                         "seamark:beacon_lateral:shape", "perch")); //$NON-NLS-1$ //$NON-NLS-2$
    925                 break;
    926             default:
    927             }
    928             switch (getStyleIndex()) {
    929             case LAT_CAN:
    930             case LAT_PILLAR:
    931             case LAT_SPAR:
    932                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    933                         "seamark:buoy_lateral:category", "starboard")); //$NON-NLS-1$ //$NON-NLS-2$
    934                 if (getRegion() == IALA_A) {
    935                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    936                             "seamark:buoy_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
    937                     colour = "green"; //$NON-NLS-1$
    938                 } else {
    939                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    940                             "seamark:buoy_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
    941                     colour = "red"; //$NON-NLS-1$
    942                 }
    943                 break;
    944             case LAT_BEACON:
    945             case LAT_TOWER:
    946                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    947                         "seamark:beacon_lateral:category", "starboard")); //$NON-NLS-1$ //$NON-NLS-2$
    948                 if (getRegion() == IALA_A) {
    949                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    950                             "seamark:beacon_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
    951                     colour = "green"; //$NON-NLS-1$
    952                 } else {
    953                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    954                             "seamark:beacon_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
    955                     colour = "red"; //$NON-NLS-1$
    956                 }
    957                 break;
    958             case LAT_FLOAT:
    959                 if (getRegion() == IALA_A) {
    960                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    961                             "seamark:light_float:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
    962                     colour = "green"; //$NON-NLS-1$
    963                 } else {
    964                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    965                             "seamark:light_float:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
    966                     colour = "red"; //$NON-NLS-1$
    967                 }
    968                 break;
    969             case LAT_PERCH:
    970                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    971                         "seamark:beacon_lateral:category", "starboard")); //$NON-NLS-1$ //$NON-NLS-2$
    972                 break;
    973             }
    974             shape = "cone, point up"; //$NON-NLS-1$
    975             break;
    976 
    977         case PREF_STARBOARD_HAND:
    978             switch (getStyleIndex()) {
    979             case LAT_CONE:
    980                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    981                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    982                         "seamark:buoy_lateral:shape", "conical")); //$NON-NLS-1$ //$NON-NLS-2$
    983                 break;
    984             case LAT_PILLAR:
    985                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    986                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    987                         "seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
    988                 break;
    989             case LAT_SPAR:
    990                 super.saveSign("buoy_lateral"); //$NON-NLS-1$
    991                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    992                         "seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
    993                 break;
    994             case LAT_BEACON:
    995                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    996                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    997                         "seamark:beacon_lateral:shape", "stake")); //$NON-NLS-1$ //$NON-NLS-2$
    998                 break;
    999             case LAT_TOWER:
    1000                 super.saveSign("beacon_lateral"); //$NON-NLS-1$
    1001                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1002                         "seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
    1003                 break;
    1004             case LAT_FLOAT:
    1005                 super.saveSign("light_float"); //$NON-NLS-1$
    1006                 break;
    1007             default:
    1008             }
    1009             switch (getStyleIndex()) {
    1010             case LAT_CAN:
    1011             case LAT_PILLAR:
    1012             case LAT_SPAR:
    1013                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1014                         "seamark:buoy_lateral:category", "preferred_channel_starboard")); //$NON-NLS-1$ //$NON-NLS-2$
    1015                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1016                         "seamark:buoy_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    1017                 if (getRegion() == IALA_A) {
    1018                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1019                             "seamark:buoy_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
    1020                     colour = "green"; //$NON-NLS-1$
    1021                 } else {
    1022                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1023                             "seamark:buoy_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
    1024                     colour = "red"; //$NON-NLS-1$
    1025                 }
    1026                 break;
    1027             case LAT_BEACON:
    1028             case LAT_TOWER:
    1029                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1030                         "seamark:beacon_lateral:category", "preferred_channel_starboard")); //$NON-NLS-1$ //$NON-NLS-2$
    1031                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1032                         "seamark:beacon_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    1033                 if (getRegion() == IALA_A) {
    1034                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1035                             "seamark:beacon_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
    1036                     colour = "green"; //$NON-NLS-1$
    1037                 } else {
    1038                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1039                             "seamark:beacon_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
    1040                     colour = "red"; //$NON-NLS-1$
    1041                 }
    1042                 break;
    1043             case LAT_FLOAT:
    1044                 Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1045                         "seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    1046                 if (getRegion() == IALA_A) {
    1047                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1048                             "seamark:light_float:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
    1049                     colour = "green"; //$NON-NLS-1$
    1050                 } else {
    1051                     Main.main.undoRedo.add(new ChangePropertyCommand(node,
    1052                             "seamark:light_float:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
    1053                     colour = "red"; //$NON-NLS-1$
    1054                 }
    1055                 break;
    1056             }
    1057             shape = "cone, point up"; //$NON-NLS-1$
    1058             break;
    1059 
    1060         default:
    1061         }
    1062         saveTopMarkData(shape, colour);
    1063         saveLightData();
    1064         saveRadarFogData();
    1065 
    1066         Main.pref.put("tomsplugin.IALA", getRegion() ? "B" : "A"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    1067     }
     415                        String image = "/images/Lateral"; //$NON-NLS-1$
     416
     417                        switch (getBuoyIndex()) {
     418                        case PORT_HAND:
     419                                if (region == IALA_A)
     420                                        switch (style) {
     421                                        case LAT_CAN:
     422                                                image += "_Can_Red"; //$NON-NLS-1$
     423                                                break;
     424                                        case LAT_PILLAR:
     425                                                image += "_Pillar_Red"; //$NON-NLS-1$
     426                                                break;
     427                                        case LAT_SPAR:
     428                                                image += "_Spar_Red"; //$NON-NLS-1$
     429                                                break;
     430                                        case LAT_BEACON:
     431                                                image += "_Beacon_Red"; //$NON-NLS-1$
     432                                                break;
     433                                        case LAT_TOWER:
     434                                                image += "_Tower_Red"; //$NON-NLS-1$
     435                                                break;
     436                                        case LAT_FLOAT:
     437                                                image += "_Float_Red"; //$NON-NLS-1$
     438                                                break;
     439                                        case LAT_PERCH:
     440                                                image += "_Perch_Port"; //$NON-NLS-1$
     441                                                break;
     442                                        default:
     443                                        }
     444                                else
     445                                        switch (style) {
     446                                        case LAT_CAN:
     447                                                image += "_Can_Green"; //$NON-NLS-1$
     448                                                break;
     449                                        case LAT_PILLAR:
     450                                                image += "_Pillar_Green"; //$NON-NLS-1$
     451                                                break;
     452                                        case LAT_SPAR:
     453                                                image += "_Spar_Green"; //$NON-NLS-1$
     454                                                break;
     455                                        case LAT_BEACON:
     456                                                image += "_Beacon_Green"; //$NON-NLS-1$
     457                                                break;
     458                                        case LAT_TOWER:
     459                                                image += "_Tower_Green"; //$NON-NLS-1$
     460                                                break;
     461                                        case LAT_FLOAT:
     462                                                image += "_Float_Green"; //$NON-NLS-1$
     463                                                break;
     464                                        case LAT_PERCH:
     465                                                image += "_Perch_Port"; //$NON-NLS-1$
     466                                                break;
     467                                        default:
     468                                        }
     469                                break;
     470
     471                        case STARBOARD_HAND:
     472                                if (region == IALA_A)
     473                                        switch (style) {
     474                                        case LAT_CONE:
     475                                                image += "_Cone_Green"; //$NON-NLS-1$
     476                                                break;
     477                                        case LAT_PILLAR:
     478                                                image += "_Pillar_Green"; //$NON-NLS-1$
     479                                                break;
     480                                        case LAT_SPAR:
     481                                                image += "_Spar_Green"; //$NON-NLS-1$
     482                                                break;
     483                                        case LAT_BEACON:
     484                                                image += "_Beacon_Green"; //$NON-NLS-1$
     485                                                break;
     486                                        case LAT_TOWER:
     487                                                image += "_Tower_Green"; //$NON-NLS-1$
     488                                                break;
     489                                        case LAT_FLOAT:
     490                                                image += "_Float_Green"; //$NON-NLS-1$
     491                                                break;
     492                                        case LAT_PERCH:
     493                                                image += "_Perch_Starboard"; //$NON-NLS-1$
     494                                                break;
     495                                        default:
     496                                        }
     497                                else
     498                                        switch (style) {
     499                                        case LAT_CONE:
     500                                                image += "_Cone_Red"; //$NON-NLS-1$
     501                                                break;
     502                                        case LAT_PILLAR:
     503                                                image += "_Pillar_Red"; //$NON-NLS-1$
     504                                                break;
     505                                        case LAT_SPAR:
     506                                                image += "_Spar_Red"; //$NON-NLS-1$
     507                                                break;
     508                                        case LAT_BEACON:
     509                                                image += "_Beacon_Red"; //$NON-NLS-1$
     510                                                break;
     511                                        case LAT_TOWER:
     512                                                image += "_Tower_Red"; //$NON-NLS-1$
     513                                                break;
     514                                        case LAT_FLOAT:
     515                                                image += "_Float_Red"; //$NON-NLS-1$
     516                                                break;
     517                                        case LAT_PERCH:
     518                                                image += "_Perch_Starboard"; //$NON-NLS-1$
     519                                                break;
     520                                        default:
     521                                        }
     522                                break;
     523
     524                        case PREF_PORT_HAND:
     525                                if (region == IALA_A)
     526                                        switch (style) {
     527                                        case LAT_CAN:
     528                                                image += "_Can_Red_Green_Red"; //$NON-NLS-1$
     529                                                break;
     530                                        case LAT_PILLAR:
     531                                                image += "_Pillar_Red_Green_Red"; //$NON-NLS-1$
     532                                                break;
     533                                        case LAT_SPAR:
     534                                                image += "_Spar_Red_Green_Red"; //$NON-NLS-1$
     535                                                break;
     536                                        case LAT_BEACON:
     537                                                image += "_Beacon_Red_Green_Red"; //$NON-NLS-1$
     538                                                break;
     539                                        case LAT_TOWER:
     540                                                image += "_Tower_Red_Green_Red"; //$NON-NLS-1$
     541                                                break;
     542                                        case LAT_FLOAT:
     543                                                image += "_Float_Red_Green_Red"; //$NON-NLS-1$
     544                                                break;
     545                                        default:
     546                                        }
     547                                else
     548                                        switch (style) {
     549                                        case LAT_CAN:
     550                                                image += "_Can_Green_Red_Green"; //$NON-NLS-1$
     551                                                break;
     552                                        case LAT_PILLAR:
     553                                                image += "_Pillar_Green_Red_Green"; //$NON-NLS-1$
     554                                                break;
     555                                        case LAT_SPAR:
     556                                                image += "_Spar_Green_Red_Green"; //$NON-NLS-1$
     557                                                break;
     558                                        case LAT_BEACON:
     559                                                image += "_Beacon_Green_Red_Green"; //$NON-NLS-1$
     560                                                break;
     561                                        case LAT_TOWER:
     562                                                image += "_Tower_Green_Red_Green"; //$NON-NLS-1$
     563                                                break;
     564                                        case LAT_FLOAT:
     565                                                image += "_Float_Green_Red_Green"; //$NON-NLS-1$
     566                                                break;
     567                                        default:
     568                                        }
     569                                break;
     570
     571                        case PREF_STARBOARD_HAND:
     572                                if (region == IALA_A)
     573                                        switch (style) {
     574                                        case LAT_CONE:
     575                                                image += "_Cone_Green_Red_Green"; //$NON-NLS-1$
     576                                                break;
     577                                        case LAT_PILLAR:
     578                                                image += "_Pillar_Green_Red_Green"; //$NON-NLS-1$
     579                                                break;
     580                                        case LAT_SPAR:
     581                                                image += "_Spar_Green_Red_Green"; //$NON-NLS-1$
     582                                                break;
     583                                        case LAT_BEACON:
     584                                                image += "_Beacon_Green_Red_Green"; //$NON-NLS-1$
     585                                                break;
     586                                        case LAT_TOWER:
     587                                                image += "_Tower_Green_Red_Green"; //$NON-NLS-1$
     588                                                break;
     589                                        case LAT_FLOAT:
     590                                                image += "_Float_Green_Red_Green"; //$NON-NLS-1$
     591                                                break;
     592                                        default:
     593                                        }
     594                                else
     595                                        switch (style) {
     596                                        case LAT_CONE:
     597                                                image += "_Cone_Red_Green_Red"; //$NON-NLS-1$
     598                                                break;
     599                                        case LAT_PILLAR:
     600                                                image += "_Pillar_Red_Green_Red"; //$NON-NLS-1$
     601                                                break;
     602                                        case LAT_SPAR:
     603                                                image += "_Spar_Red_Green_Red"; //$NON-NLS-1$
     604                                                break;
     605                                        case LAT_BEACON:
     606                                                image += "_Beacon_Red_Green_Red"; //$NON-NLS-1$
     607                                                break;
     608                                        case LAT_TOWER:
     609                                                image += "_Tower_Red_Green_Red"; //$NON-NLS-1$
     610                                                break;
     611                                        case LAT_FLOAT:
     612                                                image += "_Float_Red_Green_Red"; //$NON-NLS-1$
     613                                                break;
     614                                        default:
     615                                        }
     616                                break;
     617
     618                        default:
     619                        }
     620
     621                        if (!image.equals("/images/Lateral")) { //$NON-NLS-1$
     622
     623                                image += ".png"; //$NON-NLS-1$
     624                                dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
     625
     626                                if (hasTopMark()) {
     627                                        image = "";
     628                                        switch (getBuoyIndex()) {
     629                                        case PORT_HAND:
     630                                        case PREF_PORT_HAND:
     631                                                if (region == IALA_A)
     632                                                        switch (style) {
     633                                                        case LAT_CAN:
     634                                                                image = "/images/Top_Can_Red_Buoy_Small.png"; //$NON-NLS-1$
     635                                                                break;
     636                                                        case LAT_PILLAR:
     637                                                        case LAT_SPAR:
     638                                                                image = "/images/Top_Can_Red_Buoy.png"; //$NON-NLS-1$
     639                                                                break;
     640                                                        case LAT_BEACON:
     641                                                        case LAT_TOWER:
     642                                                                image = "/images/Top_Can_Red_Beacon.png"; //$NON-NLS-1$
     643                                                                break;
     644                                                        case LAT_FLOAT:
     645                                                                image = "/images/Top_Can_Red_Float.png"; //$NON-NLS-1$
     646                                                                break;
     647                                                        }
     648                                                else
     649                                                        switch (style) {
     650                                                        case LAT_CAN:
     651                                                                image = "/images/Top_Can_Green_Buoy_Small.png"; //$NON-NLS-1$
     652                                                                break;
     653                                                        case LAT_PILLAR:
     654                                                        case LAT_SPAR:
     655                                                                image = "/images/Top_Can_Green_Buoy.png"; //$NON-NLS-1$
     656                                                                break;
     657                                                        case LAT_BEACON:
     658                                                        case LAT_TOWER:
     659                                                                image = "/images/Top_Can_Green_Beacon.png"; //$NON-NLS-1$
     660                                                                break;
     661                                                        case LAT_FLOAT:
     662                                                                image = "/images/Top_Can_Green_Float.png"; //$NON-NLS-1$
     663                                                                break;
     664                                                        }
     665                                                break;
     666
     667                                        case STARBOARD_HAND:
     668                                        case PREF_STARBOARD_HAND:
     669                                                if (region == IALA_A)
     670                                                        switch (style) {
     671                                                        case LAT_CONE:
     672                                                                image = "/images/Top_Cone_Green_Buoy_Small.png"; //$NON-NLS-1$
     673                                                                break;
     674                                                        case LAT_PILLAR:
     675                                                        case LAT_SPAR:
     676                                                                image = "/images/Top_Cone_Green_Buoy.png"; //$NON-NLS-1$
     677                                                                break;
     678                                                        case LAT_BEACON:
     679                                                        case LAT_TOWER:
     680                                                                image = "/images/Top_Cone_Green_Beacon.png"; //$NON-NLS-1$
     681                                                                break;
     682                                                        case LAT_FLOAT:
     683                                                                image = "/images/Top_Cone_Green_Float.png"; //$NON-NLS-1$
     684                                                                break;
     685                                                        }
     686                                                else
     687                                                        switch (style) {
     688                                                        case LAT_CONE:
     689                                                                image = "/images/Top_Cone_Red_Buoy_Small.png"; //$NON-NLS-1$
     690                                                                break;
     691                                                        case LAT_PILLAR:
     692                                                        case LAT_SPAR:
     693                                                                image = "/images/Top_Cone_Red_Buoy.png"; //$NON-NLS-1$
     694                                                                break;
     695                                                        case LAT_BEACON:
     696                                                        case LAT_TOWER:
     697                                                                image = "/images/Top_Cone_Red_Beacon.png"; //$NON-NLS-1$
     698                                                                break;
     699                                                        case LAT_FLOAT:
     700                                                                image = "/images/Top_Cone_Red_Float.png"; //$NON-NLS-1$
     701                                                                break;
     702                                                        }
     703                                                break;
     704                                        }
     705                                        if (!image.isEmpty())
     706                                                dlg.lM06Icon.setIcon(new ImageIcon(getClass().getResource(image)));
     707                                }
     708                        } else
     709                                dlg.lM01Icon.setIcon(null);
     710                }
     711        }
     712
     713        public void saveSign() {
     714                Node node = getNode();
     715
     716                if (node == null) {
     717                        return;
     718                }
     719
     720                int cat = getBuoyIndex();
     721                String shape = ""; //$NON-NLS-1$
     722                String colour = ""; //$NON-NLS-1$
     723
     724                switch (cat) {
     725
     726                case PORT_HAND:
     727                        switch (getStyleIndex()) {
     728                        case LAT_CAN:
     729                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     730                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     731                                                "seamark:buoy_lateral:shape", "can")); //$NON-NLS-1$ //$NON-NLS-2$
     732                                break;
     733                        case LAT_PILLAR:
     734                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     735                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     736                                                "seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
     737                                break;
     738                        case LAT_SPAR:
     739                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     740                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     741                                                "seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
     742                                break;
     743                        case LAT_BEACON:
     744                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     745                                break;
     746                        case LAT_TOWER:
     747                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     748                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     749                                                "seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
     750                                break;
     751                        case LAT_FLOAT:
     752                                super.saveSign("light_float"); //$NON-NLS-1$
     753                                break;
     754                        case LAT_PERCH:
     755                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     756                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     757                                                "seamark:beacon_lateral:shape", "perch")); //$NON-NLS-1$ //$NON-NLS-2$
     758                                break;
     759                        default:
     760                        }
     761                        switch (getStyleIndex()) {
     762                        case LAT_CAN:
     763                        case LAT_PILLAR:
     764                        case LAT_SPAR:
     765                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     766                                                "seamark:buoy_lateral:category", "port")); //$NON-NLS-1$ //$NON-NLS-2$
     767                                if (getRegion() == IALA_A) {
     768                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     769                                                        "seamark:buoy_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
     770                                        colour = "red"; //$NON-NLS-1$
     771                                } else {
     772                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     773                                                        "seamark:buoy_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
     774                                        colour = "green"; //$NON-NLS-1$
     775                                }
     776                                break;
     777                        case LAT_PERCH:
     778                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     779                                                "seamark:beacon_lateral:category", "port")); //$NON-NLS-1$ //$NON-NLS-2$
     780                                break;
     781                        case LAT_BEACON:
     782                        case LAT_TOWER:
     783                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     784                                                "seamark:beacon_lateral:category", "port")); //$NON-NLS-1$ //$NON-NLS-2$
     785                                if (getRegion() == IALA_A) {
     786                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     787                                                        "seamark:beacon_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
     788                                        colour = "red"; //$NON-NLS-1$
     789                                } else {
     790                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     791                                                        "seamark:beacon_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
     792                                        colour = "green"; //$NON-NLS-1$
     793                                }
     794                                break;
     795                        case LAT_FLOAT:
     796                                if (getRegion() == IALA_A) {
     797                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     798                                                        "seamark:light_float:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
     799                                        colour = "red"; //$NON-NLS-1$
     800                                } else {
     801                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     802                                                        "seamark:light_float:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
     803                                        colour = "green"; //$NON-NLS-1$
     804                                }
     805                                break;
     806                        }
     807                        shape = "cylinder"; //$NON-NLS-1$
     808                        break;
     809
     810                case PREF_PORT_HAND:
     811                        switch (getStyleIndex()) {
     812                        case LAT_CAN:
     813                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     814                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     815                                                "seamark:buoy_lateral:shape", "can")); //$NON-NLS-1$ //$NON-NLS-2$
     816                                break;
     817                        case LAT_PILLAR:
     818                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     819                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     820                                                "seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
     821                                break;
     822                        case LAT_SPAR:
     823                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     824                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     825                                                "seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
     826                                break;
     827                        case LAT_BEACON:
     828                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     829                                break;
     830                        case LAT_TOWER:
     831                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     832                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     833                                                "seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
     834                                break;
     835                        case LAT_FLOAT:
     836                                super.saveSign("light_float"); //$NON-NLS-1$
     837                                break;
     838                        default:
     839                        }
     840                        switch (getStyleIndex()) {
     841                        case LAT_CAN:
     842                        case LAT_PILLAR:
     843                        case LAT_SPAR:
     844                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     845                                                "seamark:buoy_lateral:category", "preferred_channel_port")); //$NON-NLS-1$ //$NON-NLS-2$
     846                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     847                                                "seamark:buoy_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     848                                if (getRegion() == IALA_A) {
     849                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     850                                                        "seamark:buoy_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
     851                                        colour = "red"; //$NON-NLS-1$
     852                                } else {
     853                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     854                                                        "seamark:buoy_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
     855                                        colour = "green"; //$NON-NLS-1$
     856                                }
     857                                break;
     858                        case LAT_BEACON:
     859                        case LAT_TOWER:
     860                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     861                                                "seamark:beacon_lateral:category", "preferred_channel_port")); //$NON-NLS-1$ //$NON-NLS-2$
     862                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     863                                                "seamark:beacon_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     864                                if (getRegion() == IALA_A) {
     865                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     866                                                        "seamark:beacon_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
     867                                        colour = "red"; //$NON-NLS-1$
     868                                } else {
     869                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     870                                                        "seamark:beacon_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
     871                                        colour = "green"; //$NON-NLS-1$
     872                                }
     873                                break;
     874                        case LAT_FLOAT:
     875                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     876                                                "seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     877                                if (getRegion() == IALA_A) {
     878                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     879                                                        "seamark:light_float:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
     880                                        colour = "red"; //$NON-NLS-1$
     881                                } else {
     882                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     883                                                        "seamark:light_float:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
     884                                        colour = "green"; //$NON-NLS-1$
     885                                }
     886                                break;
     887                        }
     888                        shape = "cylinder"; //$NON-NLS-1$
     889                        break;
     890
     891                case STARBOARD_HAND:
     892                        switch (getStyleIndex()) {
     893                        case LAT_CONE:
     894                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     895                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     896                                                "seamark:buoy_lateral:shape", "conical")); //$NON-NLS-1$ //$NON-NLS-2$
     897                                break;
     898                        case LAT_PILLAR:
     899                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     900                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     901                                                "seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
     902                                break;
     903                        case LAT_SPAR:
     904                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     905                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     906                                                "seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
     907                                break;
     908                        case LAT_BEACON:
     909                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     910                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     911                                                "seamark:beacon_lateral:shape", "stake")); //$NON-NLS-1$ //$NON-NLS-2$
     912                                break;
     913                        case LAT_TOWER:
     914                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     915                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     916                                                "seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
     917                                break;
     918                        case LAT_FLOAT:
     919                                super.saveSign("light_float"); //$NON-NLS-1$
     920                                break;
     921                        case LAT_PERCH:
     922                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     923                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     924                                                "seamark:beacon_lateral:shape", "perch")); //$NON-NLS-1$ //$NON-NLS-2$
     925                                break;
     926                        default:
     927                        }
     928                        switch (getStyleIndex()) {
     929                        case LAT_CAN:
     930                        case LAT_PILLAR:
     931                        case LAT_SPAR:
     932                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     933                                                "seamark:buoy_lateral:category", "starboard")); //$NON-NLS-1$ //$NON-NLS-2$
     934                                if (getRegion() == IALA_A) {
     935                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     936                                                        "seamark:buoy_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
     937                                        colour = "green"; //$NON-NLS-1$
     938                                } else {
     939                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     940                                                        "seamark:buoy_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
     941                                        colour = "red"; //$NON-NLS-1$
     942                                }
     943                                break;
     944                        case LAT_BEACON:
     945                        case LAT_TOWER:
     946                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     947                                                "seamark:beacon_lateral:category", "starboard")); //$NON-NLS-1$ //$NON-NLS-2$
     948                                if (getRegion() == IALA_A) {
     949                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     950                                                        "seamark:beacon_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
     951                                        colour = "green"; //$NON-NLS-1$
     952                                } else {
     953                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     954                                                        "seamark:beacon_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
     955                                        colour = "red"; //$NON-NLS-1$
     956                                }
     957                                break;
     958                        case LAT_FLOAT:
     959                                if (getRegion() == IALA_A) {
     960                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     961                                                        "seamark:light_float:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
     962                                        colour = "green"; //$NON-NLS-1$
     963                                } else {
     964                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     965                                                        "seamark:light_float:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
     966                                        colour = "red"; //$NON-NLS-1$
     967                                }
     968                                break;
     969                        case LAT_PERCH:
     970                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     971                                                "seamark:beacon_lateral:category", "starboard")); //$NON-NLS-1$ //$NON-NLS-2$
     972                                break;
     973                        }
     974                        shape = "cone, point up"; //$NON-NLS-1$
     975                        break;
     976
     977                case PREF_STARBOARD_HAND:
     978                        switch (getStyleIndex()) {
     979                        case LAT_CONE:
     980                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     981                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     982                                                "seamark:buoy_lateral:shape", "conical")); //$NON-NLS-1$ //$NON-NLS-2$
     983                                break;
     984                        case LAT_PILLAR:
     985                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     986                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     987                                                "seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
     988                                break;
     989                        case LAT_SPAR:
     990                                super.saveSign("buoy_lateral"); //$NON-NLS-1$
     991                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     992                                                "seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
     993                                break;
     994                        case LAT_BEACON:
     995                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     996                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     997                                                "seamark:beacon_lateral:shape", "stake")); //$NON-NLS-1$ //$NON-NLS-2$
     998                                break;
     999                        case LAT_TOWER:
     1000                                super.saveSign("beacon_lateral"); //$NON-NLS-1$
     1001                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1002                                                "seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
     1003                                break;
     1004                        case LAT_FLOAT:
     1005                                super.saveSign("light_float"); //$NON-NLS-1$
     1006                                break;
     1007                        default:
     1008                        }
     1009                        switch (getStyleIndex()) {
     1010                        case LAT_CAN:
     1011                        case LAT_PILLAR:
     1012                        case LAT_SPAR:
     1013                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1014                                                "seamark:buoy_lateral:category", "preferred_channel_starboard")); //$NON-NLS-1$ //$NON-NLS-2$
     1015                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1016                                                "seamark:buoy_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     1017                                if (getRegion() == IALA_A) {
     1018                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1019                                                        "seamark:buoy_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
     1020                                        colour = "green"; //$NON-NLS-1$
     1021                                } else {
     1022                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1023                                                        "seamark:buoy_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
     1024                                        colour = "red"; //$NON-NLS-1$
     1025                                }
     1026                                break;
     1027                        case LAT_BEACON:
     1028                        case LAT_TOWER:
     1029                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1030                                                "seamark:beacon_lateral:category", "preferred_channel_starboard")); //$NON-NLS-1$ //$NON-NLS-2$
     1031                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1032                                                "seamark:beacon_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     1033                                if (getRegion() == IALA_A) {
     1034                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1035                                                        "seamark:beacon_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
     1036                                        colour = "green"; //$NON-NLS-1$
     1037                                } else {
     1038                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1039                                                        "seamark:beacon_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
     1040                                        colour = "red"; //$NON-NLS-1$
     1041                                }
     1042                                break;
     1043                        case LAT_FLOAT:
     1044                                Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1045                                                "seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     1046                                if (getRegion() == IALA_A) {
     1047                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1048                                                        "seamark:light_float:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
     1049                                        colour = "green"; //$NON-NLS-1$
     1050                                } else {
     1051                                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     1052                                                        "seamark:light_float:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
     1053                                        colour = "red"; //$NON-NLS-1$
     1054                                }
     1055                                break;
     1056                        }
     1057                        shape = "cone, point up"; //$NON-NLS-1$
     1058                        break;
     1059
     1060                default:
     1061                }
     1062                saveTopMarkData(shape, colour);
     1063                saveLightData();
     1064                saveRadarFogData();
     1065
     1066                Main.pref.put("tomsplugin.IALA", getRegion() ? "B" : "A"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     1067        }
    10681068}
  • applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java

    r23261 r23269  
    1717
    1818public class BuoyNota extends Buoy {
    19     public BuoyNota(SmpDialogAction dia, Node node) {
    20         super(dia);
     19        public BuoyNota(SmpDialogAction dia, Node node) {
     20                super(dia);
    2121
    22         Map<String, String> keys;
    23         keys = node.getKeys();
    24         setNode(node);
     22                Map<String, String> keys;
     23                keys = node.getKeys();
     24                setNode(node);
    2525
    26         resetMask();
     26                resetMask();
    2727
    28         dlg.cbM01TypeOfMark.setSelectedIndex(LIGHT);
     28                dlg.cbM01TypeOfMark.setSelectedIndex(LIGHT);
    2929
    30         dlg.cbM01CatOfMark.setEnabled(true);
    31         dlg.cbM01CatOfMark.setVisible(true);
    32         dlg.lM01CatOfMark.setVisible(true);
     30                dlg.cbM01CatOfMark.setEnabled(true);
     31                dlg.cbM01CatOfMark.setVisible(true);
     32                dlg.lM01CatOfMark.setVisible(true);
    3333
    34         dlg.cbM01CatOfMark.removeAllItems();
    35         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
    36         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.206")); //$NON-NLS-1$
    37         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.207")); //$NON-NLS-1$
    38         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.208")); //$NON-NLS-1$
    39         dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.209")); //$NON-NLS-1$
     34                dlg.cbM01CatOfMark.removeAllItems();
     35                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
     36                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.206")); //$NON-NLS-1$
     37                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.207")); //$NON-NLS-1$
     38                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.208")); //$NON-NLS-1$
     39                dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.209")); //$NON-NLS-1$
    4040
    41         setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
     41                setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
    4242
    43         if (keys.containsKey("name")) //$NON-NLS-1$
    44             setName(keys.get("name")); //$NON-NLS-1$
     43                if (keys.containsKey("name")) //$NON-NLS-1$
     44                        setName(keys.get("name")); //$NON-NLS-1$
    4545
    46         if (keys.containsKey("seamark:name")) //$NON-NLS-1$
    47             setName(keys.get("seamark:name")); //$NON-NLS-1$
     46                if (keys.containsKey("seamark:name")) //$NON-NLS-1$
     47                        setName(keys.get("seamark:name")); //$NON-NLS-1$
    4848
    49         if (keys.containsKey("seamark:landmark:name")) //$NON-NLS-1$
    50             setName(keys.get("seamark:landmark:name")); //$NON-NLS-1$
    51         else if (keys.containsKey("seamark:light_major:name")) //$NON-NLS-1$
    52             setName(keys.get("seamark:light_major:name")); //$NON-NLS-1$
    53         else if (keys.containsKey("seamark:light_minor:name")) //$NON-NLS-1$
    54             setName(keys.get("seamark:light_minor:name")); //$NON-NLS-1$
    55         else if (keys.containsKey("seamark:light_vessel:name")) //$NON-NLS-1$
    56             setName(keys.get("seamark:light_vessel:name")); //$NON-NLS-1$
     49                if (keys.containsKey("seamark:landmark:name")) //$NON-NLS-1$
     50                        setName(keys.get("seamark:landmark:name")); //$NON-NLS-1$
     51                else if (keys.containsKey("seamark:light_major:name")) //$NON-NLS-1$
     52                        setName(keys.get("seamark:light_major:name")); //$NON-NLS-1$
     53                else if (keys.containsKey("seamark:light_minor:name")) //$NON-NLS-1$
     54                        setName(keys.get("seamark:light_minor:name")); //$NON-NLS-1$
     55                else if (keys.containsKey("seamark:light_vessel:name")) //$NON-NLS-1$
     56                        setName(keys.get("seamark:light_vessel:name")); //$NON-NLS-1$
    5757
    58         if (keys.containsKey("seamark:type")) { //$NON-NLS-1$
    59             String type = keys.get("seamark:type"); //$NON-NLS-1$
    60             if (type.equals("landmark"))
    61                 setBuoyIndex(LIGHT_HOUSE);
    62             else if (type.equals("light_major"))
    63                 setBuoyIndex(LIGHT_MAJOR);
    64             else if (type.equals("light_minor"))
    65                 setBuoyIndex(LIGHT_MINOR);
    66             else if (type.equals("light_vessel"))
    67                 setBuoyIndex(LIGHT_VESSEL);
    68         }
     58                if (keys.containsKey("seamark:type")) { //$NON-NLS-1$
     59                        String type = keys.get("seamark:type"); //$NON-NLS-1$
     60                        if (type.equals("landmark"))
     61                                setBuoyIndex(LIGHT_HOUSE);
     62                        else if (type.equals("light_major"))
     63                                setBuoyIndex(LIGHT_MAJOR);
     64                        else if (type.equals("light_minor"))
     65                                setBuoyIndex(LIGHT_MINOR);
     66                        else if (type.equals("light_vessel"))
     67                                setBuoyIndex(LIGHT_VESSEL);
     68                }
    6969
    70         refreshLights();
    71         parseLights(keys);
    72         parseFogRadar(keys);
    73         setTopMark(false);
    74         setFired(true);
     70                refreshLights();
     71                parseLights(keys);
     72                parseFogRadar(keys);
     73                setTopMark(false);
     74                setFired(true);
    7575
    76         dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
    77         dlg.tfM01Name.setText(getName());
    78         dlg.cM01Fired.setEnabled(false);
    79         dlg.cM01Fired.setSelected(true);
    80     }
     76                dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
     77                dlg.tfM01Name.setText(getName());
     78                dlg.cM01Fired.setEnabled(false);
     79                dlg.cM01Fired.setSelected(true);
     80        }
    8181
    82     public boolean isValid() {
    83         return (getBuoyIndex() > 0);
    84     }
     82        public boolean isValid() {
     83                return (getBuoyIndex() > 0);
     84        }
    8585
    86     public void paintSign() {
    87         if (dlg.paintlock)
    88             return;
    89         super.paintSign();
     86        public void paintSign() {
     87                if (dlg.paintlock)
     88                        return;
     89                super.paintSign();
    9090
    91         dlg.sM01StatusBar.setText(getErrMsg());
     91                dlg.sM01StatusBar.setText(getErrMsg());
    9292
    93         if (isValid()) {
    94             dlg.cM01Radar.setVisible(true);
    95             dlg.cM01Racon.setVisible(true);
    96             dlg.cM01Fog.setVisible(true);
     93                if (isValid()) {
     94                        dlg.cM01Radar.setVisible(true);
     95                        dlg.cM01Racon.setVisible(true);
     96                        dlg.cM01Fog.setVisible(true);
    9797
    98             dlg.rbM01Fired1.setVisible(true);
    99             dlg.rbM01FiredN.setVisible(true);
    100             dlg.lM01Height.setVisible(true);
    101             dlg.tfM01Height.setVisible(true);
    102             dlg.lM01Range.setVisible(true);
    103             dlg.tfM01Range.setVisible(true);
     98                        dlg.rbM01Fired1.setVisible(true);
     99                        dlg.rbM01FiredN.setVisible(true);
     100                        dlg.lM01Height.setVisible(true);
     101                        dlg.tfM01Height.setVisible(true);
     102                        dlg.lM01Range.setVisible(true);
     103                        dlg.tfM01Range.setVisible(true);
    104104
    105             switch (getBuoyIndex()) {
    106             case SeaMark.LIGHT_HOUSE:
    107                 dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
    108                         "/images/Light_House.png"))); //$NON-NLS-1$
    109                 break;
     105                        switch (getBuoyIndex()) {
     106                        case SeaMark.LIGHT_HOUSE:
     107                                dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
     108                                                "/images/Light_House.png"))); //$NON-NLS-1$
     109                                break;
    110110
    111             case SeaMark.LIGHT_MAJOR:
    112                 dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
    113                         "/images/Light_Major.png"))); //$NON-NLS-1$
    114                 break;
     111                        case SeaMark.LIGHT_MAJOR:
     112                                dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
     113                                                "/images/Light_Major.png"))); //$NON-NLS-1$
     114                                break;
    115115
    116             case SeaMark.LIGHT_MINOR:
    117                 dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
    118                         "/images/Light_Minor.png"))); //$NON-NLS-1$
    119                 break;
     116                        case SeaMark.LIGHT_MINOR:
     117                                dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
     118                                                "/images/Light_Minor.png"))); //$NON-NLS-1$
     119                                break;
    120120
    121             case SeaMark.LIGHT_VESSEL:
    122                 dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
    123                         "/images/Major_Float.png"))); //$NON-NLS-1$
    124                 break;
     121                        case SeaMark.LIGHT_VESSEL:
     122                                dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
     123                                                "/images/Major_Float.png"))); //$NON-NLS-1$
     124                                break;
    125125
    126             default:
    127             }
    128         }
    129     }
     126                        default:
     127                        }
     128                }
     129        }
    130130
    131     public void saveSign() {
    132         Node node = getNode();
     131        public void saveSign() {
     132                Node node = getNode();
    133133
    134         if (node == null) {
    135             return;
    136         }
     134                if (node == null) {
     135                        return;
     136                }
    137137
    138         switch (getBuoyIndex()) {
    139         case LIGHT_HOUSE:
    140             super.saveSign("landmark"); //$NON-NLS-1$
    141             break;
    142         case LIGHT_MAJOR:
    143             super.saveSign("light_major"); //$NON-NLS-1$
    144             break;
    145         case LIGHT_MINOR:
    146             super.saveSign("light_minor"); //$NON-NLS-1$
    147             break;
    148         case LIGHT_VESSEL:
    149             super.saveSign("light_vessel"); //$NON-NLS-1$
    150             break;
    151         default:
    152         }
    153         saveLightData(); //$NON-NLS-1$
    154         saveRadarFogData();
    155     }
     138                switch (getBuoyIndex()) {
     139                case LIGHT_HOUSE:
     140                        super.saveSign("landmark"); //$NON-NLS-1$
     141                        break;
     142                case LIGHT_MAJOR:
     143                        super.saveSign("light_major"); //$NON-NLS-1$
     144                        break;
     145                case LIGHT_MINOR:
     146                        super.saveSign("light_minor"); //$NON-NLS-1$
     147                        break;
     148                case LIGHT_VESSEL:
     149                        super.saveSign("light_vessel"); //$NON-NLS-1$
     150                        break;
     151                default:
     152                }
     153                saveLightData(); //$NON-NLS-1$
     154                saveRadarFogData();
     155        }
    156156
    157     public void setLightColour() {
    158     }
     157        public void setLightColour() {
     158        }
    159159
    160160}
  • applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java

    r23268 r23269  
    1717
    1818public class BuoySaw extends Buoy {
    19     public BuoySaw(SmpDialogAction dia, Node node) {
    20         super(dia);
    21 
    22         String str;
    23         Map<String, String> keys;
    24         keys = node.getKeys();
    25         setNode(node);
    26 
    27         resetMask();
    28 
    29         dlg.cbM01TypeOfMark.setSelectedIndex(SAFE_WATER);
    30 
    31         dlg.cbM01StyleOfMark.removeAllItems();
    32         dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
    33         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
    34         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
    35         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.08")); //$NON-NLS-1$
    36         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
    37         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
    38         dlg.cbM01StyleOfMark.setVisible(true);
    39         dlg.lM01StyleOfMark.setVisible(true);
    40 
    41         setBuoyIndex(SAFE_WATER);
    42         setColour(SeaMark.RED_WHITE);
    43         setLightColour("W"); //$NON-NLS-1$
    44         setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
    45 
    46         if (keys.containsKey("name")) //$NON-NLS-1$
    47             setName(keys.get("name")); //$NON-NLS-1$
    48 
    49         if (keys.containsKey("seamark:name")) //$NON-NLS-1$
    50             setName(keys.get("seamark:name")); //$NON-NLS-1$
    51 
    52         if (keys.containsKey("seamark:buoy_safe_water:name")) //$NON-NLS-1$
    53             setName(keys.get("seamark:buoy_safe_water:name")); //$NON-NLS-1$
    54         else if (keys.containsKey("seamark:beacon_safe_water:name")) //$NON-NLS-1$
    55             setName(keys.get("seamark:beacon_safe_water:name")); //$NON-NLS-1$
    56         else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
    57             setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
    58 
    59         if (keys.containsKey("seamark:buoy_safe_water:shape")) { //$NON-NLS-1$
    60             str = keys.get("seamark:buoy_safe_water:shape"); //$NON-NLS-1$
    61 
    62             if (str.equals("pillar")) //$NON-NLS-1$
    63                 setStyleIndex(SAFE_PILLAR);
    64             else if (str.equals("spar")) //$NON-NLS-1$
    65                 setStyleIndex(SAFE_SPAR);
    66             else if (str.equals("sphere")) //$NON-NLS-1$
    67                 setStyleIndex(SAFE_SPHERE);
    68         } else if ((keys.containsKey("seamark:type")) //$NON-NLS-1$
    69                 && (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
    70             setStyleIndex(SAFE_FLOAT);
    71         } else if ((keys.containsKey("seamark:type")) //$NON-NLS-1$
    72                 && (keys.get("seamark:type").equals("beacon_safe_water"))) { //$NON-NLS-1$ //$NON-NLS-2$
    73             setStyleIndex(SAFE_BEACON);
    74         }
    75 
    76         if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
    77             setStyleIndex(0);
    78 
    79         if (keys.containsKey("seamark:topmark:shape") //$NON-NLS-1$
    80                 || keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
    81             setTopMark(true);
    82         }
    83 
    84         refreshLights();
    85         parseLights(keys);
    86         parseFogRadar(keys);
    87 
    88         dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
    89         dlg.tfM01Name.setText(getName());
    90         dlg.cM01TopMark.setSelected(hasTopMark());
    91     }
    92 
    93     public void refreshLights() {
    94         dlg.cbM01Kennung.removeAllItems();
    95         dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
    96         dlg.cbM01Kennung.addItem("Iso"); //$NON-NLS-1$
    97         dlg.cbM01Kennung.addItem("Oc"); //$NON-NLS-1$
    98         dlg.cbM01Kennung.addItem("LFl"); //$NON-NLS-1$
    99         dlg.cbM01Kennung.addItem("Mo"); //$NON-NLS-1$
    100         dlg.cbM01Kennung.setSelectedIndex(0);
    101     }
    102 
    103     public boolean isValid() {
    104         return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
    105     }
     19        public BuoySaw(SmpDialogAction dia, Node node) {
     20                super(dia);
     21
     22                String str;
     23                Map<String, String> keys;
     24                keys = node.getKeys();
     25                setNode(node);
     26
     27                resetMask();
     28
     29                dlg.cbM01TypeOfMark.setSelectedIndex(SAFE_WATER);
     30
     31                dlg.cbM01StyleOfMark.removeAllItems();
     32                dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
     33                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
     34                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
     35                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.08")); //$NON-NLS-1$
     36                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
     37                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
     38                dlg.cbM01StyleOfMark.setVisible(true);
     39                dlg.lM01StyleOfMark.setVisible(true);
     40
     41                setBuoyIndex(SAFE_WATER);
     42                setColour(SeaMark.RED_WHITE);
     43                setLightColour("W"); //$NON-NLS-1$
     44                setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
     45
     46                if (keys.containsKey("name")) //$NON-NLS-1$
     47                        setName(keys.get("name")); //$NON-NLS-1$
     48
     49                if (keys.containsKey("seamark:name")) //$NON-NLS-1$
     50                        setName(keys.get("seamark:name")); //$NON-NLS-1$
     51
     52                if (keys.containsKey("seamark:buoy_safe_water:name")) //$NON-NLS-1$
     53                        setName(keys.get("seamark:buoy_safe_water:name")); //$NON-NLS-1$
     54                else if (keys.containsKey("seamark:beacon_safe_water:name")) //$NON-NLS-1$
     55                        setName(keys.get("seamark:beacon_safe_water:name")); //$NON-NLS-1$
     56                else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
     57                        setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
     58
     59                if (keys.containsKey("seamark:buoy_safe_water:shape")) { //$NON-NLS-1$
     60                        str = keys.get("seamark:buoy_safe_water:shape"); //$NON-NLS-1$
     61
     62                        if (str.equals("pillar")) //$NON-NLS-1$
     63                                setStyleIndex(SAFE_PILLAR);
     64                        else if (str.equals("spar")) //$NON-NLS-1$
     65                                setStyleIndex(SAFE_SPAR);
     66                        else if (str.equals("sphere")) //$NON-NLS-1$
     67                                setStyleIndex(SAFE_SPHERE);
     68                } else if ((keys.containsKey("seamark:type")) //$NON-NLS-1$
     69                                && (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
     70                        setStyleIndex(SAFE_FLOAT);
     71                } else if ((keys.containsKey("seamark:type")) //$NON-NLS-1$
     72                                && (keys.get("seamark:type").equals("beacon_safe_water"))) { //$NON-NLS-1$ //$NON-NLS-2$
     73                        setStyleIndex(SAFE_BEACON);
     74                }
     75
     76                if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
     77                        setStyleIndex(0);
     78
     79                if (keys.containsKey("seamark:topmark:shape") //$NON-NLS-1$
     80                                || keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
     81                        setTopMark(true);
     82                }
     83
     84                refreshLights();
     85                parseLights(keys);
     86                parseFogRadar(keys);
     87
     88                dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
     89                dlg.tfM01Name.setText(getName());
     90                dlg.cM01TopMark.setSelected(hasTopMark());
     91        }
     92
     93        public void refreshLights() {
     94                dlg.cbM01Kennung.removeAllItems();
     95                dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
     96                dlg.cbM01Kennung.addItem("Iso"); //$NON-NLS-1$
     97                dlg.cbM01Kennung.addItem("Oc"); //$NON-NLS-1$
     98                dlg.cbM01Kennung.addItem("LFl"); //$NON-NLS-1$
     99                dlg.cbM01Kennung.addItem("Mo"); //$NON-NLS-1$
     100                dlg.cbM01Kennung.setSelectedIndex(0);
     101        }
     102
     103        public boolean isValid() {
     104                return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
     105        }
    106106
    107107        public void setLightColour() {
     
    114114                super.paintSign();
    115115
    116         dlg.sM01StatusBar.setText(getErrMsg());
     116                dlg.sM01StatusBar.setText(getErrMsg());
    117117
    118118                if (isValid()) {
     
    151151                        }
    152152
    153             String image = "/images/Safe_Water"; //$NON-NLS-1$
    154 
    155             switch (getStyleIndex()) {
    156             case SAFE_PILLAR:
    157                 image += "_Pillar"; //$NON-NLS-1$
    158                 break;
    159             case SAFE_SPAR:
    160                 image += "_Spar"; //$NON-NLS-1$
    161                 break;
    162             case SAFE_SPHERE:
    163                 image += "_Sphere"; //$NON-NLS-1$
    164                 break;
    165             case SAFE_BEACON:
    166                 image += "_Beacon"; //$NON-NLS-1$
    167                 break;
    168             case SAFE_FLOAT:
    169                 image += "_Float"; //$NON-NLS-1$
    170                 break;
    171             default:
    172             }
    173 
    174             if (!image.equals("/images/Safe_Water")) { //$NON-NLS-1$
    175                 image += ".png"; //$NON-NLS-1$
    176                 dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
    177                 if (hasTopMark()) {
    178                     image = "";
    179                     switch (getStyleIndex()) {
    180                     case SAFE_PILLAR:
    181                     case SAFE_SPAR:
    182                         image = "/images/Top_Sphere_Red_Buoy.png"; //$NON-NLS-1$
    183                         break;
    184                     case SAFE_SPHERE:
    185                         image = "/images/Top_Sphere_Red_Buoy_Small.png"; //$NON-NLS-1$
    186                         break;
    187                     case SAFE_BEACON:
    188                         image = "/images/Top_Sphere_Red_Beacon.png"; //$NON-NLS-1$
    189                         break;
    190                     case SAFE_FLOAT:
    191                         image = "/images/Top_Sphere_Red_Float.png"; //$NON-NLS-1$
    192                         break;
    193                     }
    194                     if (!image.isEmpty())
    195                         dlg.lM06Icon.setIcon(new ImageIcon(getClass().getResource(image)));
    196                 }
    197             } else
    198                 dlg.lM01Icon.setIcon(null);
    199         }
    200     }
    201 
    202     public void saveSign() {
    203         Node node = getNode();
    204 
    205         if (node == null) {
    206             return;
    207         }
    208 
    209         switch (getStyleIndex()) {
    210         case SAFE_PILLAR:
    211             super.saveSign("buoy_safe_water"); //$NON-NLS-1$
    212             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    213                     "seamark:buoy_safe_water:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
    214             break;
    215         case SAFE_SPAR:
    216             super.saveSign("buoy_safe_water"); //$NON-NLS-1$
    217             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    218                     "seamark:buoy_safe_water:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
    219             break;
    220         case SAFE_SPHERE:
    221             super.saveSign("buoy_safe_water"); //$NON-NLS-1$
    222             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    223                     "seamark:buoy_safe_water:shape", "sphere")); //$NON-NLS-1$ //$NON-NLS-2$
    224             break;
    225         case SAFE_BEACON:
    226             super.saveSign("beacon_safe_water"); //$NON-NLS-1$
    227             break;
    228         case SAFE_FLOAT:
    229             super.saveSign("light_float"); //$NON-NLS-1$
    230             break;
    231         default:
    232         }
    233 
    234         switch (getStyleIndex()) {
    235         case SAFE_PILLAR:
    236         case SAFE_SPAR:
    237         case SAFE_SPHERE:
    238             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    239                     "seamark:buoy_safe_water:colour_pattern", "vertical stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    240             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    241                     "seamark:buoy_safe_water:colour", "red;white")); //$NON-NLS-1$ //$NON-NLS-2$
    242             break;
    243         case SAFE_BEACON:
    244             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    245                     "seamark:beacon_safe_water:colour_pattern", "vertical stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    246             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    247                     "seamark:beacon_safe_water:colour", "red;white")); //$NON-NLS-1$ //$NON-NLS-2$
    248             break;
    249         case SAFE_FLOAT:
    250             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    251                     "seamark:light_float:colour_pattern", "vertical stripes")); //$NON-NLS-1$ //$NON-NLS-2$
    252             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    253                     "seamark:light_float:colour", "red;white")); //$NON-NLS-1$ //$NON-NLS-2$
    254             break;
    255         default:
    256         }
    257         saveTopMarkData("sphere", "red"); //$NON-NLS-1$ //$NON-NLS-2$
    258         saveLightData(); //$NON-NLS-1$
    259         saveRadarFogData();
    260     }
     153                        String image = "/images/Safe_Water"; //$NON-NLS-1$
     154
     155                        switch (getStyleIndex()) {
     156                        case SAFE_PILLAR:
     157                                image += "_Pillar"; //$NON-NLS-1$
     158                                break;
     159                        case SAFE_SPAR:
     160                                image += "_Spar"; //$NON-NLS-1$
     161                                break;
     162                        case SAFE_SPHERE:
     163                                image += "_Sphere"; //$NON-NLS-1$
     164                                break;
     165                        case SAFE_BEACON:
     166                                image += "_Beacon"; //$NON-NLS-1$
     167                                break;
     168                        case SAFE_FLOAT:
     169                                image += "_Float"; //$NON-NLS-1$
     170                                break;
     171                        default:
     172                        }
     173
     174                        if (!image.equals("/images/Safe_Water")) { //$NON-NLS-1$
     175                                image += ".png"; //$NON-NLS-1$
     176                                dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
     177                                if (hasTopMark()) {
     178                                        image = "";
     179                                        switch (getStyleIndex()) {
     180                                        case SAFE_PILLAR:
     181                                        case SAFE_SPAR:
     182                                                image = "/images/Top_Sphere_Red_Buoy.png"; //$NON-NLS-1$
     183                                                break;
     184                                        case SAFE_SPHERE:
     185                                                image = "/images/Top_Sphere_Red_Buoy_Small.png"; //$NON-NLS-1$
     186                                                break;
     187                                        case SAFE_BEACON:
     188                                                image = "/images/Top_Sphere_Red_Beacon.png"; //$NON-NLS-1$
     189                                                break;
     190                                        case SAFE_FLOAT:
     191                                                image = "/images/Top_Sphere_Red_Float.png"; //$NON-NLS-1$
     192                                                break;
     193                                        }
     194                                        if (!image.isEmpty())
     195                                                dlg.lM06Icon.setIcon(new ImageIcon(getClass().getResource(image)));
     196                                }
     197                        } else
     198                                dlg.lM01Icon.setIcon(null);
     199                }
     200        }
     201
     202        public void saveSign() {
     203                Node node = getNode();
     204
     205                if (node == null) {
     206                        return;
     207                }
     208
     209                switch (getStyleIndex()) {
     210                case SAFE_PILLAR:
     211                        super.saveSign("buoy_safe_water"); //$NON-NLS-1$
     212                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     213                                        "seamark:buoy_safe_water:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
     214                        break;
     215                case SAFE_SPAR:
     216                        super.saveSign("buoy_safe_water"); //$NON-NLS-1$
     217                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     218                                        "seamark:buoy_safe_water:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
     219                        break;
     220                case SAFE_SPHERE:
     221                        super.saveSign("buoy_safe_water"); //$NON-NLS-1$
     222                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     223                                        "seamark:buoy_safe_water:shape", "sphere")); //$NON-NLS-1$ //$NON-NLS-2$
     224                        break;
     225                case SAFE_BEACON:
     226                        super.saveSign("beacon_safe_water"); //$NON-NLS-1$
     227                        break;
     228                case SAFE_FLOAT:
     229                        super.saveSign("light_float"); //$NON-NLS-1$
     230                        break;
     231                default:
     232                }
     233
     234                switch (getStyleIndex()) {
     235                case SAFE_PILLAR:
     236                case SAFE_SPAR:
     237                case SAFE_SPHERE:
     238                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     239                                        "seamark:buoy_safe_water:colour_pattern", "vertical stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     240                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     241                                        "seamark:buoy_safe_water:colour", "red;white")); //$NON-NLS-1$ //$NON-NLS-2$
     242                        break;
     243                case SAFE_BEACON:
     244                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     245                                        "seamark:beacon_safe_water:colour_pattern", "vertical stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     246                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     247                                        "seamark:beacon_safe_water:colour", "red;white")); //$NON-NLS-1$ //$NON-NLS-2$
     248                        break;
     249                case SAFE_FLOAT:
     250                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     251                                        "seamark:light_float:colour_pattern", "vertical stripes")); //$NON-NLS-1$ //$NON-NLS-2$
     252                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     253                                        "seamark:light_float:colour", "red;white")); //$NON-NLS-1$ //$NON-NLS-2$
     254                        break;
     255                default:
     256                }
     257                saveTopMarkData("sphere", "red"); //$NON-NLS-1$ //$NON-NLS-2$
     258                saveLightData(); //$NON-NLS-1$
     259                saveRadarFogData();
     260        }
    261261}
  • applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java

    r23268 r23269  
    1717
    1818public class BuoySpec extends Buoy {
    19     public BuoySpec(SmpDialogAction dia, Node node) {
    20         super(dia);
    21 
    22         String str;
    23         Map<String, String> keys;
    24         keys = node.getKeys();
    25         setNode(node);
    26 
    27         resetMask();
    28 
    29         dlg.cbM01TypeOfMark.setSelectedIndex(SPECIAL_PURPOSE);
    30 
    31         dlg.cbM01StyleOfMark.removeAllItems();
    32         dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
    33         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
    34         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
    35         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
    36         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
    37         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
    38         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
    39         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
    40         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.08")); //$NON-NLS-1$
    41         dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.09")); //$NON-NLS-1$
    42         dlg.cbM01StyleOfMark.setVisible(true);
    43         dlg.lM01StyleOfMark.setVisible(true);
    44 
    45         dlg.cbM01TopMark.removeAllItems();
    46         dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.212"));
    47         dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.210")); //$NON-NLS-1$
    48         dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.211")); //$NON-NLS-1$
    49 
    50         dlg.cM01TopMark.setEnabled(true);
    51 
    52         setBuoyIndex(SPECIAL_PURPOSE);
    53         setColour(SeaMark.YELLOW);
    54         setLightColour("W"); //$NON-NLS-1$
    55         setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
    56 
    57         if (keys.containsKey("name")) //$NON-NLS-1$
    58             setName(keys.get("name")); //$NON-NLS-1$
    59 
    60         if (keys.containsKey("seamark:name")) //$NON-NLS-1$
    61             setName(keys.get("seamark:name")); //$NON-NLS-1$
    62 
    63         if (keys.containsKey("seamark:buoy_special_purpose:name")) //$NON-NLS-1$
    64             setName(keys.get("seamark:buoy_special_purpose:name")); //$NON-NLS-1$
    65         else if (keys.containsKey("seamark:beacon_special_purpose:name")) //$NON-NLS-1$
    66             setName(keys.get("seamark:beacon_special_purpose:name")); //$NON-NLS-1$
    67         else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
    68             setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
    69 
    70         if (keys.containsKey("seamark:buoy_special_purpose:shape")) { //$NON-NLS-1$
    71             str = keys.get("seamark:buoy_special_purpose:shape"); //$NON-NLS-1$
    72 
    73             if (str.equals("pillar")) //$NON-NLS-1$
    74                 setStyleIndex(SPEC_PILLAR);
    75             else if (str.equals("can")) //$NON-NLS-1$
    76                 setStyleIndex(SPEC_CAN);
    77             else if (str.equals("conical")) //$NON-NLS-1$
    78                 setStyleIndex(SPEC_CONE);
    79             else if (str.equals("spar")) //$NON-NLS-1$
    80                 setStyleIndex(SPEC_SPAR);
    81             else if (str.equals("sphere")) //$NON-NLS-1$
    82                 setStyleIndex(SPEC_SPHERE);
    83             else if (str.equals("barrel")) //$NON-NLS-1$
    84                 setStyleIndex(SPEC_BARREL);
    85         }
    86 
    87         if (keys.containsKey("seamark:beacon_special_purpose:shape")) { //$NON-NLS-1$
    88             str = keys.get("seamark:beacon_special_purpose:shape"); //$NON-NLS-1$
    89             if (str.equals("tower")) //$NON-NLS-1$
    90                 setStyleIndex(SPEC_TOWER);
    91             else
    92                 setStyleIndex(SPEC_BEACON);
    93         }
    94 
    95         if (keys.containsKey("seamark:light_float:colour")) {
    96             setStyleIndex(SPEC_FLOAT);
    97         }
    98 
    99         if ((keys.containsKey("seamark:type") && keys.get("seamark:type").equals( //$NON-NLS-1$ //$NON-NLS-2$
    100                 "beacon_special_purpose")) //$NON-NLS-1$
    101                 || keys.containsKey("seamark:beacon_special_purpose:colour") //$NON-NLS-1$
    102                 || keys.containsKey("seamark:beacon_special_purpose:shape")) { //$NON-NLS-1$
    103             if (keys.containsKey("seamark:beacon_special_purpose:shape") //$NON-NLS-1$
    104                     && keys.get("seamark:beacon_special_purpose:shape").equals("tower")) //$NON-NLS-1$ //$NON-NLS-2$
    105                 setStyleIndex(SPEC_TOWER);
    106             else
    107                 setStyleIndex(SPEC_BEACON);
    108         } else if (keys.containsKey("seamark:light_float:colour") //$NON-NLS-1$
    109                 && keys.get("seamark:light_float:colour").equals("yellow")) //$NON-NLS-1$ //$NON-NLS-2$
    110             setStyleIndex(SPEC_FLOAT);
    111 
    112         if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
    113             setStyleIndex(0);
    114 
    115         keys = node.getKeys();
    116         if (keys.containsKey("seamark:topmark:shape")) { //$NON-NLS-1$
    117             str = keys.get("seamark:topmark:shape"); //$NON-NLS-1$
    118 
    119             if (str.equals("x-shape")) { //$NON-NLS-1$
    120                 setTopMark(true);
    121             }
    122         }
    123 
    124         refreshLights();
    125         parseLights(keys);
    126         parseFogRadar(keys);
    127 
    128         dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
    129         dlg.tfM01Name.setText(getName());
    130         dlg.cM01TopMark.setSelected(hasTopMark());
    131     }
     19        public BuoySpec(SmpDialogAction dia, Node node) {
     20                super(dia);
     21
     22                String str;
     23                Map<String, String> keys;
     24                keys = node.getKeys();
     25                setNode(node);
     26
     27                resetMask();
     28
     29                dlg.cbM01TypeOfMark.setSelectedIndex(SPECIAL_PURPOSE);
     30
     31                dlg.cbM01StyleOfMark.removeAllItems();
     32                dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
     33                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
     34                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
     35                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
     36                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
     37                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
     38                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
     39                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
     40                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.08")); //$NON-NLS-1$
     41                dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.09")); //$NON-NLS-1$
     42                dlg.cbM01StyleOfMark.setVisible(true);
     43                dlg.lM01StyleOfMark.setVisible(true);
     44
     45                dlg.cbM01TopMark.removeAllItems();
     46                dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.212"));
     47                dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.210")); //$NON-NLS-1$
     48                dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.211")); //$NON-NLS-1$
     49
     50                dlg.cM01TopMark.setEnabled(true);
     51
     52                setBuoyIndex(SPECIAL_PURPOSE);
     53                setColour(SeaMark.YELLOW);
     54                setLightColour("W"); //$NON-NLS-1$
     55                setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
     56
     57                if (keys.containsKey("name")) //$NON-NLS-1$
     58                        setName(keys.get("name")); //$NON-NLS-1$
     59
     60                if (keys.containsKey("seamark:name")) //$NON-NLS-1$
     61                        setName(keys.get("seamark:name")); //$NON-NLS-1$
     62
     63                if (keys.containsKey("seamark:buoy_special_purpose:name")) //$NON-NLS-1$
     64                        setName(keys.get("seamark:buoy_special_purpose:name")); //$NON-NLS-1$
     65                else if (keys.containsKey("seamark:beacon_special_purpose:name")) //$NON-NLS-1$
     66                        setName(keys.get("seamark:beacon_special_purpose:name")); //$NON-NLS-1$
     67                else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
     68                        setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
     69
     70                if (keys.containsKey("seamark:buoy_special_purpose:shape")) { //$NON-NLS-1$
     71                        str = keys.get("seamark:buoy_special_purpose:shape"); //$NON-NLS-1$
     72
     73                        if (str.equals("pillar")) //$NON-NLS-1$
     74                                setStyleIndex(SPEC_PILLAR);
     75                        else if (str.equals("can")) //$NON-NLS-1$
     76                                setStyleIndex(SPEC_CAN);
     77                        else if (str.equals("conical")) //$NON-NLS-1$
     78                                setStyleIndex(SPEC_CONE);
     79                        else if (str.equals("spar")) //$NON-NLS-1$
     80                                setStyleIndex(SPEC_SPAR);
     81                        else if (str.equals("sphere")) //$NON-NLS-1$
     82                                setStyleIndex(SPEC_SPHERE);
     83                        else if (str.equals("barrel")) //$NON-NLS-1$
     84                                setStyleIndex(SPEC_BARREL);
     85                }
     86
     87                if (keys.containsKey("seamark:beacon_special_purpose:shape")) { //$NON-NLS-1$
     88                        str = keys.get("seamark:beacon_special_purpose:shape"); //$NON-NLS-1$
     89                        if (str.equals("tower")) //$NON-NLS-1$
     90                                setStyleIndex(SPEC_TOWER);
     91                        else
     92                                setStyleIndex(SPEC_BEACON);
     93                }
     94
     95                if (keys.containsKey("seamark:light_float:colour")) {
     96                        setStyleIndex(SPEC_FLOAT);
     97                }
     98
     99                if ((keys.containsKey("seamark:type") && keys.get("seamark:type").equals( //$NON-NLS-1$ //$NON-NLS-2$
     100                                "beacon_special_purpose")) //$NON-NLS-1$
     101                                || keys.containsKey("seamark:beacon_special_purpose:colour") //$NON-NLS-1$
     102                                || keys.containsKey("seamark:beacon_special_purpose:shape")) { //$NON-NLS-1$
     103                        if (keys.containsKey("seamark:beacon_special_purpose:shape") //$NON-NLS-1$
     104                                        && keys.get("seamark:beacon_special_purpose:shape").equals("tower")) //$NON-NLS-1$ //$NON-NLS-2$
     105                                setStyleIndex(SPEC_TOWER);
     106                        else
     107                                setStyleIndex(SPEC_BEACON);
     108                } else if (keys.containsKey("seamark:light_float:colour") //$NON-NLS-1$
     109                                && keys.get("seamark:light_float:colour").equals("yellow")) //$NON-NLS-1$ //$NON-NLS-2$
     110                        setStyleIndex(SPEC_FLOAT);
     111
     112                if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
     113                        setStyleIndex(0);
     114
     115                keys = node.getKeys();
     116                if (keys.containsKey("seamark:topmark:shape")) { //$NON-NLS-1$
     117                        str = keys.get("seamark:topmark:shape"); //$NON-NLS-1$
     118
     119                        if (str.equals("x-shape")) { //$NON-NLS-1$
     120                                setTopMark(true);
     121                        }
     122                }
     123
     124                refreshLights();
     125                parseLights(keys);
     126                parseFogRadar(keys);
     127
     128                dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
     129                dlg.tfM01Name.setText(getName());
     130                dlg.cM01TopMark.setSelected(hasTopMark());
     131        }
    132132
    133133        public void refreshLights() {
    134134                super.refreshLights();
    135                
     135
    136136                switch (getStyleIndex()) {
    137137                case SPEC_BARREL:
     
    146146        }
    147147
    148     public boolean isValid() {
    149         return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
    150     }
     148        public boolean isValid() {
     149                return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
     150        }
    151151
    152152        public void setLightColour() {
     
    159159                super.paintSign();
    160160
    161         dlg.sM01StatusBar.setText(getErrMsg());
     161                dlg.sM01StatusBar.setText(getErrMsg());
    162162
    163163                if (isValid()) {
     
    202202                        }
    203203
    204             String image = "/images/Special_Purpose"; //$NON-NLS-1$
    205 
    206             switch (getStyleIndex()) {
    207             case SPEC_PILLAR:
    208                 image += "_Pillar"; //$NON-NLS-1$
    209                 break;
    210             case SPEC_CAN:
    211                 image += "_Can"; //$NON-NLS-1$
    212                 break;
    213             case SPEC_CONE:
    214                 image += "_Cone"; //$NON-NLS-1$
    215                 break;
    216             case SPEC_SPAR:
    217                 image += "_Spar"; //$NON-NLS-1$
    218                 break;
    219             case SPEC_SPHERE:
    220                 image += "_Sphere"; //$NON-NLS-1$
    221                 break;
    222             case SPEC_BARREL:
    223                 image += "_Barrel"; //$NON-NLS-1$
    224                 break;
    225             case SPEC_FLOAT:
    226                 image += "_Float"; //$NON-NLS-1$
    227                 break;
    228             case SPEC_BEACON:
    229                 image += "_Beacon"; //$NON-NLS-1$
    230                 break;
    231             case SPEC_TOWER:
    232                 image += "_Tower"; //$NON-NLS-1$
    233                 break;
    234             default:
    235             }
    236 
    237             if (!image.equals("/images/Special_Purpose")) { //$NON-NLS-1$
    238                 image += ".png"; //$NON-NLS-1$
    239                 dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
    240                 if (hasTopMark()) {
    241                     image = "";
    242                     switch (getStyleIndex()) {
    243                     case SPEC_PILLAR:
    244                     case SPEC_SPAR:
    245                         image = "/images/Top_X_Yellow_Buoy.png"; //$NON-NLS-1$
    246                         break;
    247                     case SPEC_CAN:
    248                     case SPEC_CONE:
    249                     case SPEC_SPHERE:
    250                     case SPEC_BARREL:
    251                         image = "/images/Top_X_Yellow_Buoy_Small.png"; //$NON-NLS-1$
    252                         break;
    253                     case SPEC_BEACON:
    254                     case SPEC_TOWER:
    255                         image = "/images/Top_X_Yellow_Beacon.png"; //$NON-NLS-1$
    256                         break;
    257                     case SPEC_FLOAT:
    258                         image = "/images/Top_X_Yellow_Float.png"; //$NON-NLS-1$
    259                         break;
    260                     }
    261                     if (!image.isEmpty())
    262                         dlg.lM06Icon.setIcon(new ImageIcon(getClass().getResource(image)));
    263                 }
    264             } else
    265                 dlg.lM01Icon.setIcon(null);
    266         }
    267     }
    268 
    269     public void saveSign() {
    270         Node node = getNode();
    271 
    272         if (node == null) {
    273             return;
    274         }
    275 
    276         switch (getStyleIndex()) {
    277         case SPEC_PILLAR:
    278             super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
    279             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    280                     "seamark:buoy_special_purpose:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
    281             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    282                     "seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    283             break;
    284         case SPEC_SPAR:
    285             super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
    286             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    287                     "seamark:buoy_special_purpose:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
    288             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    289                     "seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    290             break;
    291         case SPEC_SPHERE:
    292             super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
    293             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    294                     "seamark:buoy_special_purpose:shape", "sphere")); //$NON-NLS-1$ //$NON-NLS-2$
    295             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    296                     "seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    297             break;
    298         case SPEC_BARREL:
    299             super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
    300             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    301                     "seamark:buoy_special_purpose:shape", "barrel")); //$NON-NLS-1$ //$NON-NLS-2$
    302             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    303                     "seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    304             break;
    305         case SPEC_FLOAT:
    306             super.saveSign("light_float"); //$NON-NLS-1$
    307             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    308                     "seamark:light_float:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    309             break;
    310         case SPEC_BEACON:
    311             super.saveSign("beacon_special_purpose"); //$NON-NLS-1$
    312             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    313                     "seamark:beacon_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    314             break;
    315         case SPEC_TOWER:
    316             super.saveSign("beacon_special_purpose"); //$NON-NLS-1$
    317             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    318                     "seamark:beacon_special_purpose:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
    319             Main.main.undoRedo.add(new ChangePropertyCommand(node,
    320                     "seamark:beacon_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
    321             break;
    322         default:
    323         }
    324         saveTopMarkData("x-shape", "yellow"); //$NON-NLS-1$ //$NON-NLS-2$
    325         saveLightData(); //$NON-NLS-1$
    326         saveRadarFogData();
    327     }
     204                        String image = "/images/Special_Purpose"; //$NON-NLS-1$
     205
     206                        switch (getStyleIndex()) {
     207                        case SPEC_PILLAR:
     208                                image += "_Pillar"; //$NON-NLS-1$
     209                                break;
     210                        case SPEC_CAN:
     211                                image += "_Can"; //$NON-NLS-1$
     212                                break;
     213                        case SPEC_CONE:
     214                                image += "_Cone"; //$NON-NLS-1$
     215                                break;
     216                        case SPEC_SPAR:
     217                                image += "_Spar"; //$NON-NLS-1$
     218                                break;
     219                        case SPEC_SPHERE:
     220                                image += "_Sphere"; //$NON-NLS-1$
     221                                break;
     222                        case SPEC_BARREL:
     223                                image += "_Barrel"; //$NON-NLS-1$
     224                                break;
     225                        case SPEC_FLOAT:
     226                                image += "_Float"; //$NON-NLS-1$
     227                                break;
     228                        case SPEC_BEACON:
     229                                image += "_Beacon"; //$NON-NLS-1$
     230                                break;
     231                        case SPEC_TOWER:
     232                                image += "_Tower"; //$NON-NLS-1$
     233                                break;
     234                        default:
     235                        }
     236
     237                        if (!image.equals("/images/Special_Purpose")) { //$NON-NLS-1$
     238                                image += ".png"; //$NON-NLS-1$
     239                                dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
     240                                if (hasTopMark()) {
     241                                        image = "";
     242                                        switch (getStyleIndex()) {
     243                                        case SPEC_PILLAR:
     244                                        case SPEC_SPAR:
     245                                                image = "/images/Top_X_Yellow_Buoy.png"; //$NON-NLS-1$
     246                                                break;
     247                                        case SPEC_CAN:
     248                                        case SPEC_CONE:
     249                                        case SPEC_SPHERE:
     250                                        case SPEC_BARREL:
     251                                                image = "/images/Top_X_Yellow_Buoy_Small.png"; //$NON-NLS-1$
     252                                                break;
     253                                        case SPEC_BEACON:
     254                                        case SPEC_TOWER:
     255                                                image = "/images/Top_X_Yellow_Beacon.png"; //$NON-NLS-1$
     256                                                break;
     257                                        case SPEC_FLOAT:
     258                                                image = "/images/Top_X_Yellow_Float.png"; //$NON-NLS-1$
     259                                                break;
     260                                        }
     261                                        if (!image.isEmpty())
     262                                                dlg.lM06Icon.setIcon(new ImageIcon(getClass().getResource(image)));
     263                                }
     264                        } else
     265                                dlg.lM01Icon.setIcon(null);
     266                }
     267        }
     268
     269        public void saveSign() {
     270                Node node = getNode();
     271
     272                if (node == null) {
     273                        return;
     274                }
     275
     276                switch (getStyleIndex()) {
     277                case SPEC_PILLAR:
     278                        super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
     279                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     280                                        "seamark:buoy_special_purpose:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
     281                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     282                                        "seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     283                        break;
     284                case SPEC_SPAR:
     285                        super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
     286                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     287                                        "seamark:buoy_special_purpose:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
     288                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     289                                        "seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     290                        break;
     291                case SPEC_SPHERE:
     292                        super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
     293                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     294                                        "seamark:buoy_special_purpose:shape", "sphere")); //$NON-NLS-1$ //$NON-NLS-2$
     295                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     296                                        "seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     297                        break;
     298                case SPEC_BARREL:
     299                        super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
     300                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     301                                        "seamark:buoy_special_purpose:shape", "barrel")); //$NON-NLS-1$ //$NON-NLS-2$
     302                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     303                                        "seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     304                        break;
     305                case SPEC_FLOAT:
     306                        super.saveSign("light_float"); //$NON-NLS-1$
     307                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     308                                        "seamark:light_float:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     309                        break;
     310                case SPEC_BEACON:
     311                        super.saveSign("beacon_special_purpose"); //$NON-NLS-1$
     312                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     313                                        "seamark:beacon_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     314                        break;
     315                case SPEC_TOWER:
     316                        super.saveSign("beacon_special_purpose"); //$NON-NLS-1$
     317                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     318                                        "seamark:beacon_special_purpose:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
     319                        Main.main.undoRedo.add(new ChangePropertyCommand(node,
     320                                        "seamark:beacon_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
     321                        break;
     322                default:
     323                }
     324                saveTopMarkData("x-shape", "yellow"); //$NON-NLS-1$ //$NON-NLS-2$
     325                saveLightData(); //$NON-NLS-1$
     326                saveRadarFogData();
     327        }
    328328}
  • applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java

    r23268 r23269  
    1818        }
    1919
    20     public void paintSign() {
    21         if (dlg.paintlock)
    22             return;
    23         super.paintSign();
     20        public void paintSign() {
     21                if (dlg.paintlock)
     22                        return;
     23                super.paintSign();
    2424
    25         if (getErrMsg() != null)
    26             dlg.sM01StatusBar.setText(getErrMsg());
     25                if (getErrMsg() != null)
     26                        dlg.sM01StatusBar.setText(getErrMsg());
    2727
    28         setErrMsg(null);
    29     }
     28                setErrMsg(null);
     29        }
    3030
    31     public void setLightColour() {
    32         super.setLightColour("");
    33     }
     31        public void setLightColour() {
     32                super.setLightColour("");
     33        }
    3434
    35     public void saveSign() {
    36     }
     35        public void saveSign() {
     36        }
    3737}
Note: See TracChangeset for help on using the changeset viewer.