• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Bildlaufleisten

klausundelke

Geowizard
Keine Ahnung ob das mit ewe überhaupt machbar ist, aber
ich würde mir angesichts der miserablen Scroll-Performance auf dem
PDA über den Pfeilen oben und unten der Bildlaufleiste der Listenansicht
jeweils eine Schaltfläche für "ganz nach oben" und "ganz nach unten" wünschen.
 

jennergruhle

Geoguru
Sehr gute Idee! Ich schau nachher mal, wie aufwändig das wird. Vermutlich ist es sehr einfach. Wo könnten denn diese zusätzlichen Buttons zu liegen kommen (habe momentan keinen CW vor Augen)? Die Dreiecke der Scrolleiste sind ja oft kaum mehr als gefühlte 5*5 Pixel groß.
 
OP
klausundelke

klausundelke

Geowizard
Ich meinte so was schon mal irgendwo gelesen zu haben.
Bin leider nur "dummer" Anwender....
Wie/wo könnte man denn sonst noch diese Buttons unterbringen?
 

pfeffer

Geowizard
doch, doch, das müsste schon gehen. Controls kann man ja ableiten und verändern.
Man nimmt einfach ein eigenes, abgeleitetes Control für die Scrollbalken. Ich glaube, das machen wir ohnehin schon ( MyScrollBarPanel ), um ihre Größe der eingestellten Schriftgröße anpassen zu können.

Das wäre also vermutlich die Klasse, in der das realisiert werden sollte (oder evtl. eine Ableitung davon, wenn man nicht überall diese Zusatz-Pfeile haben will - obwohl, warum eigentlich nicht)

Gruß,
Pfeffer.
 

googler25

Geocacher
Hervorragende Idee - würde mich für diese Funktion stark begeistern.

Vielen Dank für Eure Gedankenarbeit und mögliche Umsetzung!
:D
 

jennergruhle

Geoguru
Ich habe jetzt nachgesehen, MyScrollBarPanel ist von ScrollBarPanel abgeleitet, und das hat u.a. eine mScrollBar namens vbar. Deren mögliche Optionen kennen aber keine anderen Steuermöglichkeiten als die vorgegebenen. Man könnte höchstens darüber und darunter kleine Buttons ergänzen, aber das bedeutet mächtig herumzurechnen beim Platzieren der Dinger, und das auch noch im Konstruktor. Damit kann man dann nicht mehr den Super-Konstruktor nehmen und muss viel mehr zu Fuß machen.
 

pfeffer

Geowizard
jennergruhle schrieb:
Ich habe jetzt nachgesehen, MyScrollBarPanel ist von ScrollBarPanel abgeleitet, und das hat u.a. eine mScrollBar namens vbar. Deren mögliche Optionen kennen aber keine anderen Steuermöglichkeiten als die vorgegebenen. Man könnte höchstens darüber und darunter kleine Buttons ergänzen, aber das bedeutet mächtig herumzurechnen beim Platzieren der Dinger, und das auch noch im Konstruktor. Damit kann man dann nicht mehr den Super-Konstruktor nehmen und muss viel mehr zu Fuß machen.
Ich sehe da erstmal grunsätzlich kein Problem.
1. Viel rumrechnen muss man bestimmt nicht, ich vermute es geht ganz einfach mit .addNext(Button) und/oder .addLast(Button)
2. auf anhieb überblicke ich das nicht, aber evtl. kann man schon super() aufrufen. Falls nicht, ist das aber auch kein Problem, schließlich kann man die Routine von super() einfach per Copy und Paste kopieren und anschließend nach Belieben ändern. Nicht schön, aber schnell und einfache Lösung.

Gruß,
Pfeffer.
 

jennergruhle

Geoguru
Ja, so habe ich es gemacht (super-Konstruktor kopiert. Nur klappt das Anlegen und Hinzufügen der zwei Buttons nicht - es gibt dann ne NullpointerException beim Ausrechnen der Button-Größen. Ich habe gar nicht herausfinden können, wie man deren Größe vorher setzt (die Membervariablen width und height sind protected), und die Buttons an sich haben nur einen vorübergehenden Text ^ und v - hier brauche ich noch Icons. Mal sehen, wie andere Icon-Buttons das machen.
 

pfeffer

Geowizard
ich glaube, die Größe wird in der methode resizeTo(int w, int h), die Du überschreiben kannst, festgelegt. Kann sich ja auch zwischendurch ändern.
Vielleicht hilft das ja.

Gruß,
Pfeffer.
 

pfeffer

Geowizard
Wo hängt es im Moment?

Ich wollte mal hier noch ergänzen, dass man auf dem PC bequem die Tastatur benutzen kann (Pos1 und Ende)

Gruß,
Pfeffer.
 

jennergruhle

Geoguru
Tastatur ist klar, aber auf Mobilgeräten meist nur umständlich zuschaltbar.

Ich habe jetzt mal zwei Buttons im Konstruktor hinzugefügt (ist eine erweiterte Kopie des Super-Konstruktors):

public MyScrollBarPanel(ScrollClient client,int options) {
super(client);
hbar = new mScrollBar(mScrollBar.Horizontal,options);
vbar = new mScrollBar(mScrollBar.Vertical,options);
homeButton = new mButton("^");
homeButton.resizeTo(5,5);
endButton = new mButton("v");
endButton.resizeTo(5,5);
client = this.client;
addNext((Control)client);
addLast(homeButton).setCell(VSTRETCH).setTag(SPAN,new Dimension(1,1));
addLast(vbar).setCell(VSTRETCH).setTag(SPAN,new Dimension(1,1));
addLast(endButton).setCell(VSTRETCH).setTag(SPAN,new Dimension(1,1));
addLast(hbar).setCell(HSTRETCH).setTag(SPAN,new Dimension(1,1));
vbar.modify(Invisible|ShrinkToNothing|AlwaysRecalculateSizes,0);
hbar.modify(Invisible|ShrinkToNothing|AlwaysRecalculateSizes,0);
setOptions(options);
int s = java.lang.Math.round(Global.getPref().fontSize / 11f * 15f); // standard fontsize = 1, standard bottum size = 15
setScrollBarSize(s, s, s);
}


Leider verursachen sie folgendes:

java.lang.NullPointerException
at ewe.ui.mButton.calculateSizes(mButton.java)
at ewe.ui.Control.doCalculateSizes(Control.java)
at ewe.ui.Control.getSizes(Control.java)
at ewe.ui.Layout.calculate(CellPanel.java)
at ewe.ui.CellPanel.calculateSizes(CellPanel.java)
at ewe.ui.Control.doCalculateSizes(Control.java)
at ewe.ui.Control.checkStandardSizes(Control.java)
at ewe.ui.Control.getASize(Control.java)
at ewe.ui.Control.getPreferredSize(Control.java)
at ewe.ui.CellPanel.make(CellPanel.java)
at ewe.ui.ScrollablePanel.make(ScrollablePanel.java)
at ewe.ui.CellPanel.make(CellPanel.java)
at ewe.ui.CellPanel.make(CellPanel.java)
at ewe.ui.CellPanel.make(CellPanel.java)
at ewe.ui.CellPanel.make(CellPanel.java)
at ewe.ui.Form.make(Form.java)
at ewe.ui.Editor.make(Editor.java)
at ewe.ui.CellPanel.make(CellPanel.java)
at ewe.ui.CellPanel.make(CellPanel.java)
at ewe.ui.Frame.make(Frame.java)
at ewe.ui.FormFrame.make(FormFrame.java)
at ewe.ui.Gui.setupNewWindow(Gui.java)
at ewe.ui.Gui.execFrame(Gui.java)
at ewe.ui.Form.doShowExec(Form.java)
at ewe.ui.Form.exec(Form.java)
at ewe.ui.Form.execute(Form.java)
at CacheWolf.CacheWolf.main(CacheWolf.java:72)

Da hab ich also noch mehr zu tun, als die Dinger hinzuzufügen... Bin ja auch nicht so der GUI-Crack.
Leider kann ich auch momenatn CW gar nicht debuggen, er läuft nicht in Eclipse (genauer gesagt, er nimmt keine Mausklicks an), ich kann nur per runwolf.sh laufen lassen.
 

jennergruhle

Geoguru
Hat noch jemand eine Idee, wieso ich in MyScrollBarPanel keine Buttons hinzufügen kann? ODer genauer gesagt, wieso sie zu oben genannten Exceptions führen? Ansonsten schmeiß ich das wieder raus und wir vergessen das Thema wieder.
Zumal ich immer noch nicht debuggen kann, ich bekomme immer dieses hier:
Code:
java.lang.Exception: Class not found: Cachewolf.Cachewolf
	at ewe.applet.Applet.getMainWindow(Applet.java)
	at ewe.applet.Applet.init(Applet.java)
	at ewe.applet.Applet.main(Applet.java)
	at Ewe.main(Ewe.java)
Und das, obwohl ich den Run-Classpath 30mal kontrolliert und mit allen Kombinationen aus empfohlenen Einträgen in x Variationen experimentiert habe.
Ich kann zwar prima alles kompilieren und auch die Ant-Task fehlerfrei ausführen, aber nur über bat / sh starten.
 

arbor95

Geoguru
vielleicht musst du Cachewolf durch CacheWolf ersetzen.

Bei den program arguments : CacheWolf.CacheWolf
 
Oben