/*******************************************************************************
* Copyright (c) 2006-2008, 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
*
* Contributors:
* G. Weirich - initial implementation
*
*******************************************************************************/
package ch.elexis.agenda.preferences;
import java.io.File;
import java.io.FileInputStream;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import ch.elexis.actions.Activator;
import ch.elexis.agenda.Messages;
import ch.elexis.agenda.data.Termin;
import ch.elexis.agenda.util.Plannables;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.data.util.PlatformHelper;
import ch.elexis.core.ui.UiDesk;
import ch.elexis.core.ui.preferences.SettingsPreferenceStore;
import ch.rgw.io.FileTool;
import ch.rgw.tools.ExHandler;
public class AgendaImages extends PreferencePage implements IWorkbenchPreferencePage {
private SettingsPreferenceStore prefs;
public AgendaImages(){
prefs = new SettingsPreferenceStore(CoreHub.userCfg);
setPreferenceStore(prefs);
setDescription(Messages.AgendaImages_imagesForAgenda);
}
@Override
protected Control createContents(final Composite parent){
Composite ret = new Composite(parent, SWT.NONE);
ret.setLayout(new GridLayout(3, false));
for (String t : Termin.TerminTypes) {
Image img = Plannables.getTypImage(t);
Label lImg = new Label(ret, SWT.NONE);
lImg.setImage(img);
Label lTx = new Label(ret, SWT.NONE);
lTx.setText(t);
Button bCh = new Button(ret, SWT.PUSH);
bCh.setText(Messages.AgendaImages_change);
bCh.setData(t);
bCh.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
FileDialog fdl = new FileDialog(parent.getShell(), SWT.OPEN);
String dpath =
PlatformHelper.getBasePath(Activator.PLUGIN_ID).replaceFirst("\\\\bin", "") + File.separator + "icons"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
fdl.setFilterPath(dpath);
String name = fdl.open();
File src = new File(name);
try {
Image img = new Image(UiDesk.getDisplay(), new FileInputStream(src));
if (img != null) { // File bezeichnet ein lesbares Bild
File dest = new File(dpath + File.separator + src.getName());
if (!dest.getAbsolutePath().equalsIgnoreCase(src.getAbsolutePath())) {
// Ist noch nicht im richtigen Verzeichnis
if (FileTool.copyFile(src, dest, FileTool.FAIL_IF_EXISTS) == false) {
MessageDialog.openError(parent.getShell(),
Messages.AgendaImages_cannotCopy, Messages.AgendaImages_6
+ name + Messages.AgendaImages_7);
return;
}
}
String t = (String) ((Button) e.getSource()).getData();
CoreHub.userCfg.set(PreferenceConstants.AG_TYPIMAGE_PREFIX + t,
"icons/" + dest.getName()); //$NON-NLS-1$
}
} catch (Exception ex) {
ExHandler.handle(ex);
}
}
});
}
return ret;
}
public void init(IWorkbench workbench){
// TODO Auto-generated method stub
}
}