Ignore:
Timestamp:
2014-03-19T01:01:04+01:00 (10 years ago)
Author:
Don-vip
Message:

Refactor duplicated code

Location:
trunk/src/org/openstreetmap/josm/gui/io
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java

    r6104 r6912  
    1010import java.awt.event.ActionListener;
    1111import java.util.EventObject;
    12 import java.util.concurrent.CopyOnWriteArrayList;
    1312
    1413import javax.swing.AbstractAction;
     
    1817import javax.swing.JTable;
    1918import javax.swing.event.CellEditorListener;
    20 import javax.swing.event.ChangeEvent;
    2119import javax.swing.table.TableCellEditor;
    2220import javax.swing.table.TableCellRenderer;
    2321
     22import org.openstreetmap.josm.gui.util.CellEditorSupport;
    2423import org.openstreetmap.josm.tools.GBC;
    2524
     
    3029 *
    3130 * Intended usage is like this:
    32  * ActionFlagsTableCell aftc = new ActionFlagsTableCell();
    33  * col = new TableColumn(0);
    34  * col.setCellRenderer(aftc);
    35  * col.setCellEditor(aftc);
     31 * <code>
     32 * <br>ActionFlagsTableCell aftc = new ActionFlagsTableCell();
     33 * <br>col = new TableColumn(0);
     34 * <br>col.setCellRenderer(aftc);
     35 * <br>col.setCellEditor(aftc);
     36 * </code>
    3637 */
    3738class ActionFlagsTableCell extends JPanel implements TableCellRenderer, TableCellEditor {
    38     protected final JCheckBox[] checkBoxes = new JCheckBox[2];
    39     private CopyOnWriteArrayList<CellEditorListener> listeners;
     39    private final JCheckBox[] checkBoxes = new JCheckBox[2];
     40    private final CellEditorSupport cellEditorSupport = new CellEditorSupport(this);
    4041
    4142    private ActionListener al = new ActionListener() {
    4243        @Override
    4344        public void actionPerformed(ActionEvent e) {
    44             fireEditingStopped();
     45            cellEditorSupport.fireEditingStopped();
    4546        }
    4647    };
    4748
    4849    public ActionFlagsTableCell() {
    49         super();
    50         listeners = new CopyOnWriteArrayList<CellEditorListener>();
    51 
    5250        checkBoxes[0] = new JCheckBox(tr("Upload"));
    5351        checkBoxes[1] = new JCheckBox(tr("Save"));
     
    6361                public void actionPerformed(ActionEvent e) {
    6462                    b.setSelected(!b.isSelected());
    65                     fireEditingStopped();
     63                    cellEditorSupport.fireEditingStopped();
    6664                }
    6765            });
     
    9492    @Override
    9593    public void addCellEditorListener(CellEditorListener l) {
    96         if (l != null) {
    97             listeners.addIfAbsent(l);
    98         }
    99     }
    100 
    101     protected void fireEditingCanceled() {
    102         for (CellEditorListener l: listeners) {
    103             l.editingCanceled(new ChangeEvent(this));
    104         }
    105     }
    106 
    107     protected void fireEditingStopped() {
    108         for (CellEditorListener l: listeners) {
    109             l.editingStopped(new ChangeEvent(this));
    110         }
     94        cellEditorSupport.addCellEditorListener(l);
    11195    }
    11296
    11397    @Override
    11498    public void cancelCellEditing() {
    115         fireEditingCanceled();
     99        cellEditorSupport.fireEditingCanceled();
    116100    }
    117101
     
    131115    @Override
    132116    public void removeCellEditorListener(CellEditorListener l) {
    133         listeners.remove(l);
     117        cellEditorSupport.removeCellEditorListener(l);
    134118    }
    135119
     
    141125    @Override
    142126    public boolean stopCellEditing() {
    143         fireEditingStopped();
     127        cellEditorSupport.fireEditingStopped();
    144128        return true;
    145129    }
  • trunk/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java

    r6889 r6912  
    1414import java.io.File;
    1515import java.util.EventObject;
    16 import java.util.concurrent.CopyOnWriteArrayList;
    1716
    1817import javax.swing.AbstractAction;
     
    2322import javax.swing.JTable;
    2423import javax.swing.event.CellEditorListener;
    25 import javax.swing.event.ChangeEvent;
    2624import javax.swing.table.TableCellEditor;
    2725import javax.swing.table.TableCellRenderer;
    2826
    2927import org.openstreetmap.josm.actions.SaveActionBase;
     28import org.openstreetmap.josm.gui.util.CellEditorSupport;
     29import org.openstreetmap.josm.gui.widgets.JosmTextField;
    3030import org.openstreetmap.josm.tools.GBC;
    31 import org.openstreetmap.josm.gui.widgets.JosmTextField;
    3231
    3332class LayerNameAndFilePathTableCell extends JPanel implements TableCellRenderer, TableCellEditor {
     
    4342    private static final GBC defaultCellStyle = GBC.eol().fill(GBC.HORIZONTAL).insets(2, 0, 2, 0);
    4443
    45     private CopyOnWriteArrayList<CellEditorListener> listeners;
     44    private final CellEditorSupport cellEditorSupport = new CellEditorSupport(this);
    4645    private File value;
    4746
     
    7170        btnFileChooser.setPreferredSize(new Dimension(20, 19));
    7271        btnFileChooser.setOpaque(true);
    73 
    74         listeners = new CopyOnWriteArrayList<CellEditorListener>();
    7572    }
    7673
     
    9390    }
    9491
    95     /** renderer used while the file path is being edited **/
    96     @Override
    97     public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
    98             int row, int column) {
     92    @Override
     93    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    9994        removeAll();
    10095        SaveLayerInfo info = (SaveLayerInfo)value;
     
    182177    @Override
    183178    public void addCellEditorListener(CellEditorListener l) {
    184         if (l != null) {
    185             listeners.addIfAbsent(l);
    186         }
    187     }
    188 
    189     protected void fireEditingCanceled() {
    190         for (CellEditorListener l: listeners) {
    191             l.editingCanceled(new ChangeEvent(this));
    192         }
    193     }
    194 
    195     protected void fireEditingStopped() {
    196         for (CellEditorListener l: listeners) {
    197             l.editingStopped(new ChangeEvent(this));
    198         }
     179        cellEditorSupport.addCellEditorListener(l);
    199180    }
    200181
    201182    @Override
    202183    public void cancelCellEditing() {
    203         fireEditingCanceled();
     184        cellEditorSupport.fireEditingCanceled();
    204185    }
    205186
     
    216197    @Override
    217198    public void removeCellEditorListener(CellEditorListener l) {
    218         listeners.remove(l);
     199        cellEditorSupport.removeCellEditorListener(l);
    219200    }
    220201
     
    231212            value = new File(tfFilename.getText());
    232213        }
    233         fireEditingStopped();
     214        cellEditorSupport.fireEditingStopped();
    234215        return true;
    235216    }
Note: See TracChangeset for help on using the changeset viewer.