/******************************************************************************* * Copyright (c) 2015, Daniel Ludin * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Daniel Ludin (ludin@hispeed.ch) - initial implementation *******************************************************************************/ package ch.gpb.elexis.cst.view.profileeditor; import java.util.Calendar; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Slider; import org.eclipse.swt.widgets.Text; import ch.elexis.core.ui.UiDesk; import ch.gpb.elexis.cst.data.CstProfile; import ch.gpb.elexis.cst.dialog.ProfileOverview; import ch.gpb.elexis.cst.preferences.Messages; import ch.gpb.elexis.cst.service.CstService; public class AnzeigeOptionsComposite extends CstComposite { Label lblCrawlback; Label lblCrawlbackDate; int crawlback = 0; Text txtCrawlback; Slider sldCrawlback; Button btnEffektiv; Button btnMinimax; Button btnA4Hoch; Button btnA4Quer; private DateRangeComposite dateRangeComposite; private Group grpAusrichtung; private Label lblShowProfiles; public AnzeigeOptionsComposite(Composite parent) { super(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(5, false); setLayout(gridLayout); createLayout(this); lblShowProfiles = new Label(this, SWT.NONE); lblShowProfiles.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); lblShowProfiles.addMouseListener(new MouseAdapter() { @Override public void mouseDown(MouseEvent e) { ProfileOverview dialog = new ProfileOverview(UiDesk.getTopShell()); dialog.create(); if (dialog.open() == Window.OK) { } else { return; } } }); lblShowProfiles.setText(Messages.AnzeigeOptionsComposite_lblWoSindMeine_text); lblShowProfiles.setForeground(COLOR_RED); new Label(this, SWT.NONE); new Label(this, SWT.NONE); new Label(this, SWT.NONE); new Label(this, SWT.NONE); } // dynamic Layout elements private void createLayout(Composite anzeigeCanvas) { GridData gd5 = new GridData(); gd5.verticalAlignment = SWT.TOP; gd5.grabExcessVerticalSpace = true; anzeigeCanvas.setLayoutData(gd5); // Create the first Group Group group1 = new Group(anzeigeCanvas, SWT.NONE); group1.setText(Messages.CstProfileEditor_Darstellungsoptionen); group1.setLayout(new RowLayout(SWT.VERTICAL)); btnEffektiv = new Button(group1, SWT.RADIO); btnEffektiv.setText(Messages.CstProfileEditor_Effektiv); btnEffektiv.setData(CstProfile.ANZEIGETYP_EFFEKTIV); btnMinimax = new Button(group1, SWT.RADIO); btnMinimax.setText(Messages.CstProfileEditor_MinimalMaximal); btnMinimax.setData(CstProfile.ANZEIGETYP_MINIMAX); GridData gdGroup1 = new GridData(); gdGroup1.widthHint = 120; gdGroup1.verticalIndent = 20; gdGroup1.horizontalSpan = 2; group1.setLayoutData(gdGroup1); grpAusrichtung = new Group(anzeigeCanvas, SWT.NONE); GridData gd_grpAusrichtung = new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1); gd_grpAusrichtung.widthHint = 120; gd_grpAusrichtung.verticalIndent = 20; grpAusrichtung.setLayoutData(gd_grpAusrichtung); RowLayout rl_grpAusrichtung = new RowLayout(SWT.VERTICAL); grpAusrichtung.setLayout(rl_grpAusrichtung); //grpAusrichtung.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1)); grpAusrichtung.setText(Messages.Cst_Text_ausrichtung); btnA4Hoch = new Button(grpAusrichtung, SWT.RADIO); btnA4Hoch.setText(Messages.Cst_Text_a4hoch); btnA4Quer = new Button(grpAusrichtung, SWT.RADIO); btnA4Quer.setText(Messages.Cst_Text_a4quer); lblCrawlback = new Label(anzeigeCanvas, SWT.NONE); lblCrawlback.setSize(300, 20); lblCrawlback.setText(Messages.CstProfileEditor_Crawlback); GridData gdLblCrawlback = new GridData(SWT.BEGINNING); gdLblCrawlback.verticalIndent = 20; gdLblCrawlback.horizontalIndent = 10; lblCrawlback.setLayoutData(gdLblCrawlback); sldCrawlback = new Slider(anzeigeCanvas, SWT.HORIZONTAL); sldCrawlback.setBounds(115, 50, 25, 15); sldCrawlback.setMinimum(0); sldCrawlback.setMaximum(5840); sldCrawlback.setIncrement(5); sldCrawlback.setPageIncrement(10); sldCrawlback.setToolTipText(Messages.CstProfileEditor_CrawlbackTooltip); GridData gdSliderCrawl = new GridData(); gdSliderCrawl.verticalIndent = 20; gdSliderCrawl.horizontalAlignment = SWT.CENTER; gdSliderCrawl.horizontalIndent = 50; sldCrawlback.setLayoutData(gdSliderCrawl); txtCrawlback = new Text(anzeigeCanvas, SWT.BORDER); txtCrawlback.setEditable(false); txtCrawlback.setBounds(115, 25, 40, 25); txtCrawlback.setText("0"); GridData gdTextCrawl = new GridData(); gdTextCrawl.verticalIndent = 20; gdTextCrawl.minimumWidth = 60; gdTextCrawl.widthHint = 60; gdTextCrawl.horizontalAlignment = SWT.RIGHT; gdTextCrawl.horizontalIndent = 20; txtCrawlback.setLayoutData(gdTextCrawl); lblCrawlbackDate = new Label(anzeigeCanvas, SWT.NONE); lblCrawlbackDate.setBounds(115, 25, 40, 25); GridData gdLblCrawlDate = new GridData(); gdLblCrawlDate.verticalIndent = 20; gdLblCrawlDate.minimumWidth = 60; gdLblCrawlDate.widthHint = 60; gdLblCrawlDate.horizontalAlignment = SWT.RIGHT; gdLblCrawlDate.horizontalIndent = 20; lblCrawlbackDate.setLayoutData(gdLblCrawlDate); lblCrawlbackDate.setText("Datum"); sldCrawlback.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { txtCrawlback.setText(new Integer(sldCrawlback.getSelection()).toString()); lblCrawlbackDate.setText(CstService.getDateFromSubraction(sldCrawlback.getSelection())); crawlback = sldCrawlback.getSelection(); } }); new Label(this, SWT.NONE); Label lblPlausiCheck = new Label(anzeigeCanvas, SWT.NONE); lblPlausiCheck.setSize(300, 20); lblPlausiCheck.setText(Messages.Cst_Text_plausibilty_check); GridData gdLblPlausiCheck = new GridData(SWT.BEGINNING); gdLblPlausiCheck.horizontalIndent = 10; lblPlausiCheck.setLayoutData(gdLblPlausiCheck); new Label(this, SWT.NONE); Button btnPlausiCheck = new Button(anzeigeCanvas, SWT.CHECK); GridData gdBtnPlausiCheck = new GridData(SWT.END); gdBtnPlausiCheck.horizontalIndent = 20; btnPlausiCheck.setLayoutData(gdBtnPlausiCheck); gdBtnPlausiCheck.horizontalSpan = 2; btnPlausiCheck.setVisible(false); lblPlausiCheck.setVisible(false); new Label(this, SWT.NONE); dateRangeComposite = new DateRangeComposite(anzeigeCanvas, SWT.NONE); GridData gdDateRange = new GridData(); gdDateRange.horizontalSpan = 5; dateRangeComposite.setLayoutData(gdDateRange); SelectionListener selectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { Button button = ((Button) event.widget); System.out.print(button.getText()); if (button.getData().equals(CstProfile.ANZEIGETYP_EFFEKTIV)) { lblCrawlback.setForeground(GREEN); dateRangeComposite.setLabelColor(BLACK); } else { lblCrawlback.setForeground(BLACK); dateRangeComposite.setLabelColor(GREEN); } }; }; btnEffektiv.addSelectionListener(selectionListener); btnMinimax.addSelectionListener(selectionListener); initDates(); } public void initDates() { Calendar c = Calendar.getInstance(); dateRangeComposite.setDateStartPeriod1(CstService.getDateByAddingDays(c.getTime(), -365)); dateRangeComposite.setDateEndPeriod1(c.getTime()); dateRangeComposite.setDateEndPeriod2(CstService.getDateByAddingDays(c.getTime(), -365)); dateRangeComposite.setDateStartPeriod2(CstService.getDateByAddingDays(c.getTime(), -730)); dateRangeComposite.setDateEndPeriod3(CstService.getDateByAddingDays(c.getTime(), -730)); dateRangeComposite.setDateStartPeriod3(CstService.getDateByAddingDays(c.getTime(), -1095)); } public int getCrawlback() { return crawlback; } public void setCrawlback(int crawlback) { this.crawlback = crawlback; this.sldCrawlback.setSelection(crawlback); this.txtCrawlback.setText(String.valueOf(crawlback)); lblCrawlbackDate.setText(CstService.getDateFromSubraction(crawlback)); } public DateRangeComposite getDateRangeComposite() { return dateRangeComposite; } public void setDateRangeComposite(DateRangeComposite dateRangeComposite) { this.dateRangeComposite = dateRangeComposite; } public String getPeriod1StartDate() { return CstService.getCompactFromDate(dateRangeComposite.cdtPeriod1Start.getSelection()); } public void setPeriod1StartDate(String sCompactDate) { dateRangeComposite.cdtPeriod1Start.setSelection(CstService.getDateFromCompact(sCompactDate)); } public String getPeriod1EndDate() { return CstService.getCompactFromDate(dateRangeComposite.cdtPeriod1End.getSelection()); } public void setPeriod1EndDate(String sCompactDate) { dateRangeComposite.cdtPeriod1End.setSelection(CstService.getDateFromCompact(sCompactDate)); } public String getPeriod2StartDate() { return CstService.getCompactFromDate(dateRangeComposite.cdtPeriod2Start.getSelection()); } public void setPeriod2StartDate(String sCompactDate) { dateRangeComposite.cdtPeriod2Start.setSelection(CstService.getDateFromCompact(sCompactDate)); } public String getPeriod2EndDate() { return CstService.getCompactFromDate(dateRangeComposite.cdtPeriod2End.getSelection()); } public void setPeriod2EndDate(String sCompactDate) { dateRangeComposite.cdtPeriod2End.setSelection(CstService.getDateFromCompact(sCompactDate)); } public String getPeriod3StartDate() { return CstService.getCompactFromDate(dateRangeComposite.cdtPeriod3Start.getSelection()); } public void setPeriod3StartDate(String sCompactDate) { dateRangeComposite.cdtPeriod3Start.setSelection(CstService.getDateFromCompact(sCompactDate)); } public String getPeriod3EndDate() { return CstService.getCompactFromDate(dateRangeComposite.cdtPeriod3End.getSelection()); } public void setPeriod3EndDate(String sCompactDate) { dateRangeComposite.cdtPeriod3End.setSelection(CstService.getDateFromCompact(sCompactDate)); } public void setAnzeigeTyp(String sAnzeigeTyp) { if (sAnzeigeTyp.startsWith(CstProfile.ANZEIGETYP_EFFEKTIV)) { btnEffektiv.setSelection(true); btnMinimax.setSelection(false); } else { btnEffektiv.setSelection(false); btnMinimax.setSelection(true); } } public String getAnzeigeTyp() { if (btnEffektiv.getSelection()) { return CstProfile.ANZEIGETYP_EFFEKTIV; } else { return CstProfile.ANZEIGETYP_MINIMAX; } } // 0 = hoch, 1 = quer public void setAusgabeRichtung(boolean ausgabeRichtung) { if (ausgabeRichtung) { btnA4Hoch.setSelection(false); btnA4Quer.setSelection(true); } else { btnA4Hoch.setSelection(true); btnA4Quer.setSelection(false); } } public boolean getAusgabeRichtung() { return btnA4Quer.getSelection(); } }