source: josm/trunk/src/org/openstreetmap/josm/gui/io/SaveFlagCellEditor.java@ 4153

Last change on this file since 4153 was 3083, checked in by bastiK, 14 years ago

added svn:eol-style=native to source files

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.io;
3
4import java.awt.Component;
5import java.awt.event.MouseAdapter;
6import java.awt.event.MouseEvent;
7import java.util.EventObject;
8import java.util.concurrent.CopyOnWriteArrayList;
9
10import javax.swing.JCheckBox;
11import javax.swing.JTable;
12import javax.swing.event.CellEditorListener;
13import javax.swing.event.ChangeEvent;
14import javax.swing.table.TableCellEditor;
15
16/**
17 * This is {@see TableCellEditor} for a boolean flag. It is used in two table columns of
18 * {@see SaveLayersTable} and renders the values of {@see SaveLayerInfo#isDoSaveToFile()}
19 * and {@see SaveLayerInfo#isDoUploadToServer()}
20 *
21 */
22class SaveFlagCellEditor extends JCheckBox implements TableCellEditor {
23 private CopyOnWriteArrayList<CellEditorListener> listeners;
24 private boolean value;
25
26 public SaveFlagCellEditor() {
27 listeners = new CopyOnWriteArrayList<CellEditorListener>();
28 addMouseListener(
29 new MouseAdapter() {
30 @Override
31 public void mouseExited(MouseEvent e) {
32 stopCellEditing();
33 }
34 }
35 );
36 }
37
38 public void addCellEditorListener(CellEditorListener l) {
39 if (l != null) {
40 listeners.addIfAbsent(l);
41 }
42 }
43
44 protected void fireEditingCanceled() {
45 for (CellEditorListener l: listeners) {
46 l.editingCanceled(new ChangeEvent(this));
47 }
48 }
49
50 protected void fireEditingStopped() {
51 for (CellEditorListener l: listeners) {
52 l.editingStopped(new ChangeEvent(this));
53 }
54 }
55
56 public void cancelCellEditing() {
57 fireEditingCanceled();
58 }
59
60 public Object getCellEditorValue() {
61 return value;
62 }
63
64 public boolean isCellEditable(EventObject anEvent) {
65 return true;
66 }
67
68 public void removeCellEditorListener(CellEditorListener l) {
69 listeners.remove(l);
70 }
71
72 public boolean shouldSelectCell(EventObject anEvent) {
73 return true;
74 }
75
76 public void setInitialValue(boolean value) {
77 this.value = value;
78 setSelected(value);
79 }
80
81 public boolean stopCellEditing() {
82 this.value = isSelected();
83 fireEditingStopped();
84 return true;
85 }
86
87 public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
88 SaveLayerInfo info = (SaveLayerInfo)value;
89 switch(column) {
90 case 4: setInitialValue(info.isDoUploadToServer()); break;
91 case 5: setInitialValue(info.isDoSaveToFile()); break;
92 }
93 return this;
94 }
95}
Note: See TracBrowser for help on using the repository browser.