Changeset 30491 in osm for applications/editors/josm/plugins/NanoLog/src/nanolog/NanoLogPanel.java
- Timestamp:
- 2014-06-10T00:04:18+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/NanoLog/src/nanolog/NanoLogPanel.java
r27960 r30491 1 1 package nanolog; 2 2 3 import java.awt.Rectangle; 4 import java.text.SimpleDateFormat; 5 import java.util.*; 3 6 import javax.swing.*; 7 import nanolog.NanoLogLayer.NanoLogLayerListener; 8 import org.openstreetmap.josm.Main; 9 import org.openstreetmap.josm.gui.MapView.LayerChangeListener; 4 10 import org.openstreetmap.josm.gui.dialogs.ToggleDialog; 11 import org.openstreetmap.josm.gui.layer.Layer; 5 12 import static org.openstreetmap.josm.tools.I18n.tr; 6 13 import org.openstreetmap.josm.tools.Shortcut; … … 11 18 * @author zverik 12 19 */ 13 public class NanoLogPanel extends ToggleDialog { 14 private JList logPanel; 20 public class NanoLogPanel extends ToggleDialog implements LayerChangeListener, NanoLogLayerListener { 21 private JList<String> logPanel; 15 22 private LogListModel listModel; 16 23 17 24 public NanoLogPanel() { 18 super(tr("NanoLog"), "nanolog", tr("Open NanoLog panel"), null, 150, true);25 super(tr("NanoLog"), "nanolog", tr("Open NanoLog panel"), null, 150, false); 19 26 20 27 listModel = new LogListModel(); 21 logPanel = new JList(listModel); 28 logPanel = new JList<String>(listModel); 22 29 createLayout(logPanel, true, null); 23 30 } 31 32 public void updateMarkers() { 33 List<NanoLogEntry> entries = new ArrayList<NanoLogEntry>(); 34 for( NanoLogLayer l : Main.map.mapView.getLayersOfType(NanoLogLayer.class) ) { 35 entries.addAll(l.getEntries()); 36 } 37 listModel.setEntries(entries); 38 } 39 40 @Override 41 public void activeLayerChange( Layer oldLayer, Layer newLayer ) { 42 // todo 43 } 44 45 @Override 46 public void layerAdded( Layer newLayer ) { 47 if( newLayer instanceof NanoLogLayer ) 48 ((NanoLogLayer)newLayer).addListener(this); 49 updateMarkers(); 50 } 51 52 @Override 53 public void layerRemoved( Layer oldLayer ) { 54 updateMarkers(); 55 } 56 57 @Override 58 public void markersUpdated( NanoLogLayer layer ) { 59 updateMarkers(); 60 } 61 62 @Override 63 public void markerActivated( NanoLogLayer layer, NanoLogEntry entry ) { 64 int idx = entry == null ? -1 : listModel.find(entry); 65 if( idx >= 0 ) { 66 logPanel.setSelectedIndex(idx); 67 Rectangle rect = logPanel.getCellBounds(Math.max(0, idx-2), Math.min(idx+4, listModel.getSize())); 68 logPanel.scrollRectToVisible(rect); 69 } 70 } 24 71 25 private class LogListModel extends AbstractListModel { 72 private class LogListModel extends AbstractListModel<String> { 73 private List<NanoLogEntry> entries; 74 private final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss"); 26 75 27 76 public int getSize() { 28 return 0;77 return entries.size(); 29 78 } 30 79 31 80 public String getElementAt( int index ) { 32 return ""; // todo 81 return TIME_FORMAT.format(entries.get(index).getTime()) + " " + entries.get(index).getMessage(); 82 } 83 84 public void setEntries( List<NanoLogEntry> entries ) { 85 this.entries = entries; 86 fireContentsChanged(this, 0, entries.size()); 87 } 88 89 public int find( NanoLogEntry entry ) { 90 return entries.indexOf(entry); 33 91 } 34 92 }
Note:
See TracChangeset
for help on using the changeset viewer.