![]() |
|
ConvertPanel::tablePositions - Printable Version +- RouteConverter Forum (https://forum.routeconverter.com) +-- Forum: Users (https://forum.routeconverter.com/forum-17.html) +--- Forum: Deutsch: Diskussionen (https://forum.routeconverter.com/forum-4.html) +--- Thread: ConvertPanel::tablePositions (/thread-741.html) |
ConvertPanel::tablePositions - IlmariKrebs - 27.08.2010 Hallo Christian, kannst Du mir einen Hinweis geben, wo noch was fehlt: Ich habe für die Positionstabelle ConvertPanel::tablePositions die Property autoCreateRowSorter auf true gesetzt. Kann man händisch machen oder in IntelliJ IDEA im UIDesigner setzen. Danach verhält sich RC seltsam. Beim Öffnen einer gpx Datei spuckt er nur, dass beim Download was schiefgegangen sei. Gruß, Ilmari SCHWERWIEGEND: java.lang.reflect.InvocationTargetException 27.08.2010 18:06:26 SCHWERWIEGEND: at java.awt.EventQueue.invokeAndWait(EventQueue.java:998) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1320) 27.08.2010 18:06:26 SCHWERWIEGEND: at slash.navigation.converter.gui.panels.ConvertPanel$17.run(ConvertPanel.java:398) 27.08.2010 18:06:26 SCHWERWIEGEND: at java.lang.Thread.run(Thread.java:619) 27.08.2010 18:06:26 SCHWERWIEGEND: Caused by: java.lang.IllegalArgumentException: This is determined by the PositionsTableColumnModel 27.08.2010 18:06:26 SCHWERWIEGEND: at slash.navigation.converter.gui.models.PositionsModelImpl.getColumnCount(PositionsModelImpl.java:60) 27.08.2010 18:06:26 SCHWERWIEGEND: at slash.navigation.converter.gui.undo.UndoPositionsModel.getColumnCount(UndoPositionsModel.java:39) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.table.TableRowSorter$TableRowSorterModelWrapper.getColumnCount(TableRowSorter.java:244) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.DefaultRowSorter.updateUseToString(DefaultRowSorter.java:602) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.DefaultRowSorter.sort(DefaultRowSorter.java:556) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.DefaultRowSorter.allRowsChanged(DefaultRowSorter.java:835) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.JTable.notifySorter(JTable.java:4245) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.JTable.sortedTableChanged(JTable.java:4105) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.JTable.tableChanged(JTable.java:4382) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280) 27.08.2010 18:06:26 SCHWERWIEGEND: at javax.swing.table.AbstractTableModel.fireTableDataChanged(AbstractTableModel.java:182) 27.08.2010 18:06:26 SCHWERWIEGEND: at slash.navigation.converter.gui.models.PositionsModelImpl.setRoute(PositionsModelImpl.java:52) 27.08.2010 18:06:26 SCHWERWIEGEND: at slash.navigation.converter.gui.undo.UndoPositionsModel.setRoute(UndoPositionsModel.java:91) 27.08.2010 18:06:26 SCHWERWIEGEND: at slash.navigation.converter.gui.models.FormatAndRoutesModel.setSelectedItem(FormatAndRoutesModel.java:186) 27.08.2010 18:06:26 SCHWERWIEGEND: at slash.navigation.converter.gui.models.FormatAndRoutesModel.setRoutes(FormatAndRoutesModel.java:86) 27.08.2010 18:06:26 SCHWERWIEGEND: at slash.navigation.converter.gui.panels.ConvertPanel$17$1.run(ConvertPanel.java:402) 27.08.2010 18:06:26 SCHWERWIEGEND: at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199) 27.08.2010 18:06:26 SCHWERWIEGEND: at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 27.08.2010 18:06:26 SCHWERWIEGEND: at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 27.08.2010 18:06:26 SCHWERWIEGEND: at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 27.08.2010 18:06:26 SCHWERWIEGEND: at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 27.08.2010 18:06:26 SCHWERWIEGEND: at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 27.08.2010 18:06:26 SCHWERWIEGEND: at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 27.08.2010 18:06:26 SCHWERWIEGEND: at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 27.08.2010 18:06:26 slash.navigation.converter.gui.RouteConverter$7 run SCHWERWIEGEND: Open error: null RE: ConvertPanel::tablePositions - routeconverter - 27.08.2010 (27.08.2010, 17:09)IlmariKrebs Wrote: kannst Du mir einen Hinweis geben, wo noch was fehlt: Was willst Du denn erreichen? (27.08.2010, 17:09)IlmariKrebs Wrote: Ich habe für die Positionstabelle ConvertPanel::tablePositions die Property autoCreateRowSorter auf true gesetzt. Kann man händisch machen oder in IntelliJ IDEA im UIDesigner setzen. Danach verhält sich RC seltsam. Beim Öffnen einer gpx Datei spuckt er nur, dass beim Download was schiefgegangen sei. Das Caption.PNG kann ich leider nicht öffnen. RE: ConvertPanel::tablePositions - routeconverter - 27.08.2010 (27.08.2010, 17:09)IlmariKrebs Wrote: 27.08.2010 18:06:26 Das ist der entscheidende Teil: Der von Dir konfigurierte Spaltensortierer möchte die Anzahl der wissen - die wird bei mir aber nicht von PositionsModelImpl festgelegt, da sie variabel ist sondern vom PositionsTableColumnModel. Die NPE von Screenshot ist auf die gescheiterte Initialisierung zurückzuführen. RE: ConvertPanel::tablePositions - IlmariKrebs - 27.08.2010 Danke, aber wenn PositionsTableColumnModel für den Sorter nehme, dann wird die GUI nicht richtig initialisiert. Da werde ich noch ein wenig forschen müssen. Anbei habe ich einen Patch, mit dem ich die Positionsliste ausdrucken kann. Das ist eine Funktionalität, die ich schon länger vermisste. Schaus Dir mal an, ob Du damit was anfangen willst. Nachteil ist, dass der Swing Druckerauswahl Dialog hochkommt. Viele Grüße, Ilmari RE: ConvertPanel::tablePositions - routeconverter - 29.08.2010 (27.08.2010, 22:21)IlmariKrebs Wrote: aber wenn PositionsTableColumnModel für den Sorter nehme, dann wird die GUI nicht richtig initialisiert. Da fliegt bestimmt eine Exception. (27.08.2010, 22:21)IlmariKrebs Wrote: Da werde ich noch ein wenig forschen müssen. Du kannst die Swing-Automatik fürs Sortieen nicht nutzen und mußt dies ausprogrammieren für jede Spalte. Nochmal die Frage: wofür willst Du das? (27.08.2010, 22:21)IlmariKrebs Wrote: Anbei habe ich einen Patch, mit dem ich die Positionsliste ausdrucken kann. Das ist eine Funktionalität, die ich schon länger vermisste. Gute Idee. Was kommt dabei heraus? (27.08.2010, 22:21)IlmariKrebs Wrote: Schaus Dir mal an, ob Du damit was anfangen willst. Nachteil ist, dass der Swing Druckerauswahl Dialog hochkommt. Bei mir bleibt das ganze Programm stehen in Win32PrintServies#getMediaPrintableArea :-( Habe hier Windows 7 64-bit - 1 Netzwerkdrucker, 1 PDF-Drucker. Könnte es daran liegen? Zum Patch: Schöner ist es, wenn er minimal ist, d.h. keine überflüssigen Imports wie +import javax.swing.table.TableModel; +import javax.swing.table.TableRowSorter; enthält. Oder Extra-Leerzeilen wie hier @@ -601,6 +606,7 @@ renameDialog.pack(); renameDialog.restoreLocation(); renameDialog.setVisible(true); + } Und Fehler zu "fressen" ist fürs Ausprobieren ok, da muß natürlich ein Fehlerdialog hin: + public void print() { + try { + getPositionsView().print(); + } catch (PrinterException e) { + e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. + } + } RE: ConvertPanel::tablePositions - IlmariKrebs - 30.08.2010 (29.08.2010, 12:00)routeconverter Wrote: Du kannst die Swing-Automatik fürs Sortieen nicht nutzen und mußt dies ausprogrammieren für jede Spalte. Wenn ich eine Wegpunktliste bereinigen will, dann geht das relativ geschickt, wenn ich westlich, östlich, nördlich oder südlich alles wegwerfen kann, nur wenn die Liste sortiert ist. Ich benutze EasyGPS hierfür recht häufig. Andere Anwendungen wären in einem Track alle Punkte zu finden wo ein bestimmtes Kriterium erfüllt ist, dann läßt es sich besser in einer sortierten Liste suchen. (29.08.2010, 12:00)routeconverter Wrote:(27.08.2010, 22:21)IlmariKrebs Wrote: Anbei habe ich einen Patch, mit dem ich die Positionsliste ausdrucken kann. Das ist eine Funktionalität, die ich schon länger vermisste. Eine ausgedruckte Liste der Positionen, so wie sie in der GUI sichtbar ist. Diese habe ich bislang immer per Bildschirmhardcopy erzeugt. (29.08.2010, 12:00)routeconverter Wrote: Bei mir bleibt das ganze Programm stehen in Win32PrintServies#getMediaPrintableArea :-( Habe hier Windows 7 64-bit - 1 Netzwerkdrucker, 1 PDF-Drucker. Könnte es daran liegen? Hmmm..Ich habe bis auf den Netzwerkdrucker die selbe Konfiguration. Habe aber einen etwas älteren Stand von RC (Anfang/Mitte August). (29.08.2010, 12:00)routeconverter Wrote: Zum Patch: Schöner ist es, wenn er minimal ist, d.h. keine überflüssigen Imports wie Das hatte ich auch gesehen, aber da ich so einen Patch das erste mal erzeugt habe nicht weiter modifiziert. Lässt sich der Patch manuell bearbeiten, oder kommt der Import ganz durcheinander? (29.08.2010, 12:00)routeconverter Wrote: Und Fehler zu "fressen" ist fürs Ausprobieren ok, da muß natürlich ein Fehlerdialog hin:Hast Du eine passende Stelle in den Sourcen zum Nachschauen? RE: ConvertPanel::tablePositions - routeconverter - 30.08.2010 (30.08.2010, 09:25)IlmariKrebs Wrote: Wenn ich eine Wegpunktliste bereinigen will, dann geht das relativ geschickt, wenn ich westlich, östlich, nördlich oder südlich alles wegwerfen kann, nur wenn die Liste sortiert ist. Ich benutze EasyGPS hierfür recht häufig. Das heißt, Du sortierst nach Längen- oder Breitengrad und verwirfst dann alles, was größer oder kleiner als ein gewisser Wert ist? (30.08.2010, 09:25)IlmariKrebs Wrote: Andere Anwendungen wären in einem Track alle Punkte zu finden wo ein bestimmtes Kriterium erfüllt ist, dann läßt es sich besser in einer sortierten Liste suchen. Und die ursprüngliche Reihenfolge spielt keine Rolle mehr? (30.08.2010, 09:25)IlmariKrebs Wrote:(29.08.2010, 12:00)routeconverter Wrote: Zum Patch: Schöner ist es, wenn er minimal ist, d.h. keine überflüssigen Imports wie Der Patch ließ sich problemlos anwenden (Version Control/Apply patch... in IDEA). (30.08.2010, 09:25)IlmariKrebs Wrote: Hast Du eine passende Stelle in den Sourcen zum Nachschauen? z.B. ConvertPanel#saveFile() zeigt ganz schön das Muster mit Umsetzen des Cursors, Loggen der Exception, Öffnen des Fehlerdialogs: Quote: private void saveFile(File file, NavigationFormat format, BaseRoute route, int fileCount, RE: ConvertPanel::tablePositions - IlmariKrebs - 31.08.2010 (30.08.2010, 10:32)routeconverter Wrote: Das heißt, Du sortierst nach Längen- oder Breitengrad und verwirfst dann alles, was größer oder kleiner als ein gewisser Wert ist? Ja genau. (30.08.2010, 10:32)routeconverter Wrote: Und die ursprüngliche Reihenfolge spielt keine Rolle mehr? Der Vorteil der JTable Sortierung ist, dass die Daten im TableModel nicht modifiziert werden, sondern die Daten in der Sortierreihenfolge angezeigt werden. Man muss lediglich noch die Indices des Views in die Indices im TableModel transformieren. Somit bliebe die Reihenfolge erhalten, die für Routen und Tracks wichtig ist. Für eine Liste von Wegpunkten wäre sie im Falle von Geocaches oder POI nicht wirklich dringend notwendig. (30.08.2010, 10:32)routeconverter Wrote: private void saveFile(File file, NavigationFormat format, BaseRoute route, int fileCount, Habe ich dementsprechend angepasst. Gruß Ilmari RE: ConvertPanel::tablePositions - IlmariKrebs - 03.09.2010 Hallo Christian, habe noch zwei Patches angefügt: einmal zum Drucken der Positionsliste + Ergebnis pdf und ein paar Änderungen, damit man die Positionsliste sortieren kann. Gruß, Ilmari RE: ConvertPanel::tablePositions - routeconverter - 04.09.2010 (03.09.2010, 18:19)IlmariKrebs Wrote: habe noch zwei Patches angefügt: Hallo Ilmari, vielen Dank dafür. Das Format der Patches ist anders als zuvor: Index: route-converter/src/main/java/slash/navigation/converter/gui/RouteConverter.java =================================================================== @@ -801,6 +801,7 @@ + actionManager.register("print-positions", new PrintPositionsAction()); Das wird nicht als "unified diff" erkannt, dies hier schon: Index: java/slash/navigation/converter/gui/helper/FrameMenu.java =================================================================== --- java/slash/navigation/converter/gui/helper/FrameMenu.java (revision 1947) +++ java/slash/navigation/converter/gui/helper/FrameMenu.java (working copy) @@ -42,6 +42,7 @@ printMenu.add(JMenuHelper.createItem("print-map")); printMenu.add(JMenuHelper.createItem("print-map-and-route")); printMenu.add(JMenuHelper.createItem("print-elevation-profile")); + printMenu.add(JMenuHelper.createItem("print-positions")); fileMenu.add(printMenu); fileMenu.addSeparator(); fileMenu.add(JMenuHelper.createItem("exit")); Klar könnte ich das per Hand einsortieren, aber es ist wohl viel leichter und weniger fehlerträchtig, wenn Du die Patches nochmal im unified diff-Format erzeugst, oder? |