|
|
|
|
bzw. du solltest vlt. eher getCommand auf abstrakt setzen und dann innerhalb der abgeleiteten Klasse nen Wert zurückgeben. statt ne variable zu haben, und in der abstrakten Klasse nen getter dafür.
Und dann halt beim aufrufen von getCommand auf null prüfen und dann loggen/exception werfen.
|
|
|
|
|
|
|
Gut, dann mach ich das über
|
Code: |
public abstract class ConsoleAction {
public abstract String getCommand();
public abstract void execute(String[] args);
} |
|
bzw.
|
Code: |
commandLine.registerAction(new ConsoleAction() {
@Override
public String getCommand() {
return "QUIT";
}
@Override
public void execute(String[] args) {
System.exit(0);
}
}); |
|
Vielleicht komme ich darauf nochmal zurück wenn ich dann auch Eingaben mit Argumenten verarbeiten muss, aber ich glaube momentan ist das kein Problem
|
|
|
|
|
|
|
Grunz, wie zentriert man nochmal das Suckerfish Dropdown CSS-Menu? Ich hatte das Problem schonmal, hab aber vergessen, wie ich es gelöst habe
|
Code: |
#mainmenu
{
text-align: center;
width:100%;
height: 40px;
background-image: url(../images/navi.jpg) ;
background-repeat: repeat-x;
}
#mainmenu ul {
height: 40px;
padding: 0;
margin: 0;
list-style: none;
}
#mainmenu a {
display: block;
width: 70;
margin-top: 14px;
}
#mainmenu li {
float: left;
width: 10em;
list-style: none;
}
#mainmenu li ul {
position: absolute;
padding: 5px;
width: 10em;
left: -999em;
}
#mainmenu li:hover ul {
left: auto;
}
#mainmenu li:hover ul, #mainmenu li.sfhover ul {
left: auto;
}
|
|
|
|
|
|
|
|
|
@Morgelot
Vorhin wollte ich dir eigentlich ein Beispiel zeigen, wurde dann aber von meiner Arbeit unterbrochen.
Interface:
|
Code: |
package booking;
public interface Bookable
{
public final static String DATE = "BOOK";
public final static String DEVICE = "DEVICE";
public final static String USER = "USER";
public final static String ROOM = "ROOM";
public String book(String... strExec);
}
|
|
Impl:
|
Code: |
package booking;
public class BookingDate implements Bookable
{
@Override
public String book(String... strExec)
{
String retVal = "Beginn Datum: " + strExec[0] + " ";
retVal = "Ende Datum: " + strExec[1] + " ";
return retVal;
}
}
|
|
Klassen:
Bookable.java
BookingDate.java
BookingDevice.java
BookingRoom.java
BookingUser.java
Aufruf:
|
Code: |
Map<String,Bookable> map = new HashMap<String,Bookable>();
{
map.put(Bookable.DATE, new BookingDate());
map.put(Bookable.DEVICE, new BookingDevice());
map.put(Bookable.ROOM, new BookingRoom());
map.put(Bookable.USER, new BookingUser());
}
public Main()
{
String userInput1 = "BOOK 12.01.10 13.01.10 DEVICE Beamer17 USER Horst";
String userInput2 = "BOOK 15.02.11 21.02.11 ROOM 16.17 216 USER Horst Schlämmer";
Scanner in = new Scanner(userInput2);
in.useDelimiter(" ");
String cmd = in.next();
while(in.hasNext())
{
if(map.containsKey(cmd))
{
String param = in.next();
List<String> paramList = new ArrayList<String>();
while(!map.containsKey(param))
{
paramList.add(param);
if(in.hasNext())
{
param = in.next();
}
else
{
break;
}
}
System.out.println(map.get(cmd).book(paramList.toArray(new String[0])));
// Parameter ist ein Command
cmd = param;
}
}
}
|
|
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von jdo_O am 28.01.2011 16:04]
|
|
|
|
|
|
Das scheitert nur leider dran dass wir weder Scanner noch HashMap verwenden dürfen. Wir sind auf java.lang.* und java.util.(ArrayList, Calendar, Collections, Comparator, Iterator, List) beschränkt.
|
|
|
|
|
|
|
Scanner ist ein nice to have.
Aber ohne eine Map sehe ich nur die hässliche Variante mit if/else bzw. switch.
Das Reflection nicht zu empfehlen ist, weißt du bereits.
PS: Der Aufruf ist schnell hingeklatscht und geht vermutlich deutlich schöner.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von jdo_O am 28.01.2011 16:12]
|
|
|
|
|
|
| Zitat von Slutti Aber wie soll ich ziwschen den verschachtelten Elementen unterscheiden? Ich möchte ja eben nicht, dass alle Elemente einer Ebene die gleiche Farbe bekommen.
Es soll ja so sein:
Alles was zum ersten li gehört -> rot
Alles was zum zweiten litg gehört -> grün
Alles was zum dritten li gehört -> blau
[...] | |
|
Code: |
bla>bla>li:nth-child(1) ,
bla>bla>li:nth-child(1) * {background-color:red}
bla>bla>li:nth-child(2) ,
bla>bla>li:nth-child(2) * {background-color:green}
bla>bla>li:nth-child(3) ,
bla>bla>li:nth-child(3) * {background-color:blue} |
|
|
|
|
|
|
|
|
Naja, ich mache das jetzt über eine ArrayMap, bis mir was Besseres einfällt.
|
|
|
|
|
|
|
Boah geht mir das aufm Sack. Ich werd zu schlecht bezahlt dafür. Der Tag ist gelaufen. HASS HASS HASS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Trigger ist eine Internet-Sound-Meme.
|
|
|
|
|
|
|
Ich hab das noch nie gehört
|
|
|
|
|
|
|
Hab ich grad aus meinem TF2-Medien-Ordner rausgekramt. Wird ab und zu mal auf meinem Lieblings-TF2-Server abgespielt
* * *
Wtf was ist das denn für ein riesen Klopper. Aufm dem Foto geht's sogar noch, aber das Ding ist echt mal groß
Größer als das Drachenbuch (Compilerbau) und größer als das Datenbanken Implementierungstechniken Buch
|
|
|
|
|
|
|
Schonmal Krieg und Frieden durchgelesen?
Hmm, gerade Lust blueprint.css auszuprobieren, aber irgendwie fehlt mir die Idee, was ich damit anfange.
|
|
|
|
|
|
|
Ich bin sonst eher der Taschenbuch-Freund
|
|
|
|
|
|
|
| Zitat von WeGi
Schonmal Krieg und Frieden durchgelesen?
Hmm, gerade Lust blueprint.css auszuprobieren, aber irgendwie fehlt mir die Idee, was ich damit anfange.
| |
Ist super.
|
|
|
|
|
|
|
| Zitat von TriggerTG
Ich bin sonst eher der Taschenbuch-Freund
| |
Taschenbuch to the Rescue:
|
|
|
|
|
|
|
Gehts doch mal wieder zurück zum Webdesign \o/
Ich habe ein Eingabefeld, das ist im Normalzustand so groß:
Bei einem focus wird es aufgeklappt und ein paar Buttons drunter tauchen auch auf:
Wenn kein Text im Feld ist und man woanders hinklickt (blur) wird das Eingabefeld wieder eingeklappt. Das soll aber nicht passieren wenn man auf eine von den Checkboxen unten klickt. Jemand eine Idee wie man das umsetzen kann? Das größte Hindernis ist dass das blur-Event ausgelöst wird bevor die Checkbox aktiviert wird.
Der aktuelle Code ist der hier: http://userscripts.org/scripts/show/95466
|
|
|
|
|
|
|
Du solltest die Mauskoordinaten überprüfen können. Mit jQuery sollte es kein Problem sein zu prüfen ob der Klick innerhalb deines Container erfolgt ist, wenn nicht klappst du das ganze wieder ein.
//wo kam denn das Icon her
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Smoking am 28.01.2011 19:37]
|
|
|
|
|
|
oder ein "onmouseover form -> disable blur stuff" "onmouseout of form -> enable blur stuff"
|
|
|
|
|
|
|
Und wenn der User reintabbt?
e: Und was bedeutet dieser "anonym gerne, aber..."-Abschnitt? Hat der irgendeine Funktion oder soll der mir irgendwas sagen?
und wenn du da schon so ein Riesenfeld aufklappst, warum machst du das Feld im Normalzustand nicht zumindest zweizeilig?
ee: Muss es ueberhaupt wieder automatisch einklappen, wenn der Nutzer Text eingegeben hat -- kann man es dann nicht einfach sinnvollerweise aufgeklappt lassen? Was fuer eine Funktion hat die Seite, auf der dieses Element sich befindet, denn?
eee: Und ich werde jetzt weiter hypothetische Fragen stellen, Probleme aufwerfen und dich verunsichern, bis du ein Beratungsmandat fuer ein bisschen Javascript vergibst. \o/
eeee: Muss es denn ueberhaupt mit Javascript geloest werden? Was ist mit Mobilnutzern?
eeeee: Vielleicht lieber eine modale Loesung -- Link "Kommentar hinzufuegen..." -> Nutzer bekommt erst dann ein Overlay mit Textfeld und Absenden-/Abbrechen-Buttons praesentiert?
|
[Dieser Beitrag wurde 5 mal editiert; zum letzten Mal von igor]2 am 28.01.2011 18:42]
|
|
|
|
|
|
| Zitat von igor]2
Und wenn der User reintabbt?
e: Und was bedeutet dieser "anonym gerne, aber..."-Abschnitt? Hat der irgendeine Funktion oder soll der mir irgendwas sagen?
und wenn du da schon so ein Riesenfeld aufklappst, warum machst du das Feld im Normalzustand nicht zumindest zweizeilig?
ee: Muss es ueberhaupt wieder automatisch einklappen, wenn der Nutzer Text eingegeben hat -- kann man es dann nicht einfach sinnvollerweise aufgeklappt lassen? Was fuer eine Funktion hat die Seite, auf der dieses Element sich befindet, denn?
eee: Und ich werde jetzt weiter hypothetische Fragen stellen, Probleme aufwerfen und dich verunsichern, bis du ein Beratungsmandat fuer ein bisschen Javascript vergibst. \o/
eeee: Muss es denn ueberhaupt mit Javascript geloest werden? Was ist mit Mobilnutzern?
eeeee: Vielleicht lieber eine modale Loesung -- Link "Kommentar hinzufuegen..." -> Nutzer bekommt erst dann ein Overlay mit Textfeld und Absenden-/Abbrechen-Buttons praesentiert?
| |
http://dl.dropbox.com/u/8741514/scheisse.wav
|
|
|
|
|
|
|
| Zitat von igor]2
e:ee:eee:eeee:eeeee:
| | Die Community existiert schon, ich mache nur das Userscript dafür. Die hat eine Funktion für anonyme Kommentare weil man sonst mit seinem Realnamen drinsteht. Eine App haben sie schon. Ich bin nicht verunsichert.
Und außerdem weiß ich jetzt wie ich das mache. Bei blur wird ein Timer gestartet der nach 100ms oder so das Teil zuklappt wenn nicht vorher eins von den Elementen aktiviert wurde. Das müsste dann auch für Rumtabben funktionieren.
|
|
|
|
|
|
|
DAS HAM WIR JA WIEDER GERNE!
ERST HIER UNSERE TEURE ARBEITSZEIT ANFRAGEN UND DANN DOCH NICHT DRUM SCHEREN, WAS GEANTWORTET WIRD! :MAD:
|
|
|
|
|
|
|
Aber ohne eure Ideen würde ich da gar nicht drauf kommen.
|
|
|
|
|
|
|
|
|
|
|
| Zitat von Danzelot Die Community existiert schon, ich mache nur das Userscript dafür. Die hat eine Funktion für anonyme Kommentare weil man sonst mit seinem Realnamen drinsteht. Eine App haben sie schon. Ich bin nicht verunsichert.
Und außerdem weiß ich jetzt wie ich das mache. Bei blur wird ein Timer gestartet der nach 100ms oder so das Teil zuklappt wenn nicht vorher eins von den Elementen aktiviert wurde. Das müsste dann auch für Rumtabben funktionieren. | | denk dran, mir meinen share für die timeridee (die ich neulich hier angebracht habe) schnellzuüberweisen, sonst kann ich morgen keinen latte trinken.
|
|
|
|
|
|
|
|
|
|
|
Starbucks ist was für Juppies und Waldorfschüler!
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |