Datechooser

schuetzejanett

Erfahrenes Mitglied
Hallo,

wollte in meine Anwendung den DateChooser von Nebula verwenden, weil er mir besser gefällt als CDAteTime was es auch noch von Nebula gibt und weil der Datetime widget was SWT mitbringt nicht auf doppelklick reagiert. jetzt habe ich aber gelesen, das das widget noch im Alpha State ist, kann ich es da trotzdem bedenkenlos in meine Studienarbeit einbauen oder sollte ich doch auf datetime ausweichen welches im Beta Status ist.

Hier ist der link zu dem widget.
DateChooser
 
Hi!
Ich habe mal kurz auf die Seite geschaut. Da steht ja folgender Hinweis dabei ...
NOTE: The DateChooser and DateChooserCombo widgets are in an ALPHA state. The API is stable, but users should expect changes in future versions: add of new features, minor behavior changes.

Also ich hab diesen DateChooser noch nicht verwendet. Aber für deine Studienarbeit solltest du ihn ohne große Probleme verwenden können. Gerade Studienarbeiten sind meistens Projekte die zeitlich begrenzt sind. Solltest du später das Programm weiter entwickeln, und den DateChooser in einer zukünftigen Beta Version einbauen, könnte es durchaus sein dass du Anpassungen machen müsstest. Aber normalerweise verschwinden Studienarbeiten irgendwann in der Schublade und werden nicht mehr benötigt ;-)
 
naja die studienarbeit ist ein programm für ne firma also sollte ich wohl dann doc lieber auf das CDateTime ausweichen. Oder was denkst du solange die beta vrsion nicht eingebaut wird müsste es ja stabil laufen.

Und weiß zufällig jemand ob man bei dem datechooser, das datem vorbelegen kann? Also das nach dem öffnen des fensters schon ein wert drinsteht?
 
Ich hab diesen Datechooser verwendet!
Bin aber nach dem update auf 3.3 auf den Datchooser von SWT ausgewichen!
Er läuft zeitweise leider etwas unstabil bei den traverseevents hab aber da das projekt sehr einfach programmiert ist manche probleme selbst ausbessern können außerdem stehen dei TODO einträge noch im Programmcode !
Die Standardauswahl geht glaub ich mit setSelection!
 
Geht bei dem datechooser von SWT denn mittlerweile bei Calendar ein Mouselistener oder irgendein anderes event was einen doppelklick abfängt, dann steig ich auch um.
 
hallo, also das einzige was mir noch einfällt wäre sie mit openview zu öffnen , aber dann öffnet er sie halt jedesmal.

sag mal wegen dem dateTime. Ich wollte das gerne als ComboBox machen. und wenn ich drauf klicke geht halt der kalender auf wenn ich dann ein datum auswähle geht er wieder zu. nur wie unterscheide ich ob ich oben auf den pfeil für die monate geklickt habe oder ein datum ausgewählt habe?

habe auch mit dem selectionlistener probiert aber auch der reagiert auf beides also normalen klick und monat wechsel und auch möchte ich nur das er reagiert wenn er über einem datumswert ist also nicht wenn jemand auf Mo(Montag klickt)

fällt dir dazu was ein?
 
Zuletzt bearbeitet:
ja das ist leider ein rießen Problem das ich denke die Herrn "SWT" nicht sehr durchdacht gelöst haben! ich hab es so gemacht das ich neben einem Textfeld einen Button gemacht habe der ein Shell öffnet mit eine Ok button d.h. das datum wird nach dem Ok button eingetragen!

Das mit dem OpenView hat funkt. nur ist es jetzt so das ich 2 Views hab und die Aktion immer dann angewendet wird welcher view gearde im folder 2 offen ist! nur hab ich das porblem das einer immer nicht offen ist und so wird einfach mitten unter der methode abgeborchen!

Hier noch der Code für den Datepicker:
Achtung hab das jetzt einfach raukopiert sind einige Sachen drinn die du nicht brauchen wirst, außerdem sind die Versuch die ich mit den klicks probiert habe auch drinnen
Code:
	private void createCalendarShell(){
		calendarShell = new Shell(getDisplay());
		calendarShell.setLayout(new GridLayout());
		calendarShell.setBackground(new Color(Display.getCurrent(),255,255,255));
		row=cursor.getRow();
		column=cursor.getColumn();
		String date=row.getText(column);
		Date this_date;
		if(date!="" || date!=null){
			try {
				this_date=dateformat.parse(date);
			} catch (ParseException e1) {
				this_date=new Date();
				e1.printStackTrace();
			}
		}else{
			this_date=new Date();
		}
		calendarShell.addListener(SWT.Deactivate, new Listener(){
			public void handleEvent(Event event) {
				calendarShell.close();
				text.setFocus();
				edit();
			}
		});
		final DateTime calendar = new DateTime (calendarShell, SWT.CALENDAR);
		calendar.addMouseListener(new MouseListener(){

			public void mouseDoubleClick(MouseEvent e) {
				System.out.println("doubleClick");
			}

			public void mouseDown(MouseEvent e) {
				System.out.println("Click");
				
			}

			public void mouseUp(MouseEvent e) {
				System.out.println("Clickup");
				
			}
			
		});
		GregorianCalendar greg_calender = new GregorianCalendar();
		greg_calender.setTime(this_date);
		calendar.setDay(greg_calender.get(Calendar.DAY_OF_MONTH));
		calendar.setMonth(greg_calender.get(Calendar.MONTH));
		calendar.setYear(greg_calender.get(Calendar.YEAR));
		Button button = new Button(calendarShell,SWT.PUSH);
		button.setText("OK");
		button.addSelectionListener (new SelectionAdapter () {
			public void widgetSelected (SelectionEvent e) {

				String day=	Integer.toString(calendar.getDay());
				if(day.length()<2){
					day="0"+day;
				}
				String month=Integer.toString(calendar.getMonth()+1);;
				if(month.length()<2){
					month="0"+month;
				}
				String year=Integer.toString(calendar.getYear());
				String datum=day+"."+month+"."+year;
				rowIsModified=true;
				fieldIsModified=true;
				row=cursor.getRow();
				column=cursor.getColumn();
				row.setText(column,datum);
				calendarShell.close();
				edit();
			}
		});
		calendarShell.setSize(calendarShell.computeSize(SWT.DEFAULT, SWT.DEFAULT));
		calendarShell.open();
	}
 
Zurück