/******************************************************************************* * Copyright (c) 2009, G. Weirich and Elexis * 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 * * Sponsoring: * mediX Notfallpaxis, diepraxen Stauffacher AG, Zürich * * Contributors: * G. Weirich - initial implementation * *******************************************************************************/ package ch.elexis.agenda.ui; import java.util.ArrayList; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.ImageHyperlink; import ch.elexis.actions.Activator; import ch.elexis.agenda.preferences.PreferenceConstants; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.ui.UiDesk; import ch.elexis.core.ui.util.SWTHelper; import ch.rgw.tools.StringTool; /** * The header above the resource columns with the name of the resources (and probably later more * elements) * * @author gerry * */ public class ColumnHeader extends Composite { AgendaParallel view; static final String IMG_PERSONS_NAME = Activator.PLUGIN_ID + "/personen"; //$NON-NLS-1$ static final String IMG_PERSONS_PATH = "icons/personen.png"; //$NON-NLS-1$ ImageHyperlink ihRes; ColumnHeader(Composite parent, AgendaParallel v){ super(parent, SWT.NONE); view = v; if (UiDesk.getImage(IMG_PERSONS_NAME) == null) { UiDesk.getImageRegistry().put(IMG_PERSONS_NAME, Activator.getImageDescriptor(IMG_PERSONS_PATH)); } ihRes = new ImageHyperlink(this, SWT.NONE); ihRes.setImage(UiDesk.getImage(IMG_PERSONS_NAME)); ihRes.setToolTipText(Messages.ColumnHeader_selectMandatorToShow); ihRes.addHyperlinkListener(new HyperlinkAdapter() { @Override public void linkActivated(HyperlinkEvent e){ new SelectResourceDlg().open(); } }); } void recalc(double widthPerColumn, int left_offset, int padding, int textSize){ GridData gd = (GridData) getLayoutData(); gd.heightHint = textSize + 2; for (Control c : getChildren()) { if (c instanceof Label) { c.dispose(); } } Point bSize = ihRes.computeSize(SWT.DEFAULT, SWT.DEFAULT); ihRes.setBounds(0, 0, bSize.x, bSize.y); String[] labels = view.getDisplayedResources(); int count = labels.length; for (int i = 0; i < count; i++) { int lx = left_offset + (int) Math.round(i * (widthPerColumn + padding)); Label l = new Label(this, SWT.NONE); l.setText(labels[i]); int outer = (int) Math.round(widthPerColumn); int inner = l.computeSize(SWT.DEFAULT, SWT.DEFAULT).x; int off = (outer - inner) / 2; lx += off; l.setBounds(lx, 0, inner, textSize + 2); } } class SelectResourceDlg extends TitleAreaDialog { public SelectResourceDlg(){ super(ColumnHeader.this.getShell()); } @Override protected Control createDialogArea(Composite parent){ Composite ret = (Composite) super.createDialogArea(parent); String[] displayed = view.getDisplayedResources(); for (String r : Activator.getDefault().getResources()) { Button b = new Button(ret, SWT.CHECK); b.setText(r); if (StringTool.getIndex(displayed, r) != -1) { b.setSelection(true); } b.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); } return ret; } @Override public void create(){ super.create(); getShell().setText(Messages.ColumnHeader_Mandantors); setTitle(Messages.ColumnHeader_mandatorsForParallelView); setMessage(Messages.ColumnHeader_selectMandators); } @Override protected void okPressed(){ Composite dlg = (Composite) getDialogArea(); String[] res = Activator.getDefault().getResources(); ArrayList<String> sel = new ArrayList<String>(res.length); for (Control c : dlg.getChildren()) { if (c instanceof Button) { if (((Button) c).getSelection()) { sel.add(((Button) c).getText()); } } } view.clear(); CoreHub.localCfg.set(PreferenceConstants.AG_RESOURCESTOSHOW, StringTool.join(sel, ",")); //$NON-NLS-1$ view.refresh(); super.okPressed(); } } }