06.09.2010, 20:47
(This post was last modified: 06.09.2010, 21:00 by IlmariKrebs.)
(06.09.2010, 07:47)routeconverter Wrote: Wo ich grüble ist, ob Sortier- und Filterfunktionen nun direkt auf den Daten wirken sollen oder nur die Ansicht der Daten beeinflussen sollten wie in Deinem Vorschlag. Ich fürchte die vielen Supportanfragen, wenn Nutzer genau das andere erwarten, was implementiert ist
Die Frage hierbei ist, wo man eine Auswirkung auf das Sortieren feststellen kann. Die Hauptanwendung der Ergebnisse werden ja auf ein Navi übertragen.
Im Falle von Routen und Tracks ist vermutlich eine Sortierung der Punkte nicht erwünscht. Wer will schon erst nach Frankfurt fahren um von dort über Hamburg nach Hanau zu gelangen, nur weil die Orte alphabetisch sortiert sind.
Wenn die Daten im View sortiert sind, so lassen sich die einzelnen Punkte gezielt finden und dann manipulieren (löschen, etc...)
Wenn man eine Liste von Geocaches oder anderen Wegpunkten aufs Navi überträgt werden sie alphabetisch nach Namen sortiert. Zumindest auf meinem eTrex H.
Anders sieht es aus, wenn ich eine Liste von Wegpunkten im View sortiert habe und dann erwarte, dass ich entsprechend der Sortierung auch einen Track daraus generieren will.
Im Falle der Filterung will man sich aus der Menge von POIs nur die Tankstellen anschauen und später nach was anderem Filtern. Das lässt sich einfach im View mit der JTable realisieren, aber nicht so einfach auf den Originaldaten.
(06.09.2010, 07:47)routeconverter Wrote: Aus Usability-Sicht wäre die Wirkung der Sortieroperation zu klären, diese ggfs. ins Undo/Redo zu integrieren, es bräuchte eine Möglichkeit, die Ansicht zum Lade-Zeitpunkt wiederherzustellen. Und einen bloßen Klick auf den Tabellenkopf werden die meisten nicht als Sortieraufforderung verstehen,
Ich weiss nicht, ob ich mich nur daran gewöhnt habe, aber ich empfinde es als Standardverhalten, wenn man auf den Spaltenkopf klickt, dass die Tabelle entsprechend der Spalte sortiert wird. Auch wenn Excel an dieser Stelle anders bedient wird und ein anderes Verhalten hat.
(06.09.2010, 07:47)routeconverter Wrote: d.h. das Kontextmenü und die Menüzeile wären zu erweitern. Für die nächste Version ist das zu viel - ich warte nur darauf, daß die Website fertig wird und will dann releasen.
Das ist natürlich viel störende Arbeit.
(06.09.2010, 07:47)routeconverter Wrote: Den Konflikt, ob Sortier- und Filterfunktionen nun direkt auf den Daten wirken sollen oder nur die Ansicht der Daten beeinflussen sollten wie in Deinem Vorschlag, sieht man auch auf technischer Sicht. Ich habe den JTable bewußt als Liste gebraucht, die Spaltenorientierung bringt dann Fehler wie diesen hervor:
Wie hast Du diesen Fehler provoziert? Es gibt so wie für die Zeilenindexe auch eine Transformation von Spaltenindexe:
JTable provides methods that convert from model coordinates to view coordinates — convertColumnIndexToView and convertRowIndexToView — and that convert from view coordinates to model coordinates — convertColumnIndexToModel and convertRowIndexToModel.
http://download.oracle.com/javase/tutori...ml#sorting
(06.09.2010, 07:47)routeconverter Wrote: Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: column beyond range of TableModel
at javax.swing.DefaultRowSorter.checkColumn(DefaultRowSorter.java:1202)
at javax.swing.DefaultRowSorter.toggleSortOrder(DefaultRowSorter.java:435)
at javax.swing.plaf.basic.BasicTableHeaderUI$MouseInputHandler.mouseClicked(BasicTableHeaderUI.java:96)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:252)
at java.awt.Component.processMouseEvent(Component.java:6270)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
(06.09.2010, 14:46)kumo Wrote: Den einzigen für mich sinnvollen Anwendungsfall für eine Sortierfunktion sehe ich im Sortieren von POI's. Entweder alphabetisch nach Beschreibung oder geografisch nach Breitengrad oder Längengrad. Ein anderer Anwendungsfall fällt mir momentan nicht ein. Tracks oder Routen würden durch eine Sortierfunktion schlicht zerstört werden.
Nun gut man könnte sich eine gefahrene Strecke nach Geschwindigkeit untersuchen wo man besonders schnell war oder wo man langsam war. Nur mal so gesponnen...
(06.09.2010, 19:22)routeconverter Wrote:(06.09.2010, 18:43)kumo Wrote: Grundsatzfrage: Soll ein Sortieren der ganzen Positionsliste möglich sein oder eines Teilbereichs?
Gute Frage, daran hatte ich noch gar nicht gedacht.
Der Gedanke ist mir bislang noch nie in den Sinn gekommen, habt Ihr mal irgendwo schon gesehen? Liesse sich Eure Anwendung auch als Sequenz von Filtern und Sortieren ausführen?
So spontan fällt mir nur eine Implementierung ein, die nur auf den Originaldaten operiert.
Grüße,
Ilmari