/*******************************************************************************
* Copyright (c) 2011-2016 Medevit OG, Medelexis AG
* 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:
* Marco Descher, initial API and implementaion
* Lucia Amman, bug fixes and improvements
* Sponsors: M. + P. Richter
*******************************************************************************/
package at.medevit.elexis.gdt.defaultfilecp.ui;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import at.medevit.elexis.gdt.defaultfilecp.FileCommPartner;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.ui.preferences.SettingsPreferenceStore;
public class GDTPreferencePageFileTransfer extends PreferencePage
implements IWorkbenchPreferencePage {
private Composite editorParent;
List<FileCommPartnerComposite> fileCommPartnerComposites =
new ArrayList<FileCommPartnerComposite>();
/**
* Create the preference page.
*/
public GDTPreferencePageFileTransfer(){
setTitle("Datei-Kommunikation");
}
@Override
protected Control createContents(Composite parent){
fileCommPartnerComposites.clear();
editorParent = new Composite(parent, SWT.NONE);
editorParent.setLayout(new GridLayout(3, false));
Button btnCfg = new Button(editorParent, SWT.CHECK);
btnCfg.setText("Dateisystem Einstellungen global speichern");
btnCfg.setSelection(FileCommPartner.isFileTransferGlobalConfigured());
btnCfg.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
Button button = (Button) e.widget;
FileCommPartner.setFileTransferConfiguration(button.getSelection());
for (Control c : editorParent.getChildren()) {
if (c instanceof FileCommPartnerComposite) {
c.dispose();
}
}
createContent();
editorParent.layout(true, true);
}
});
createContent();
return editorParent;
}
private void createContent(){
ScrolledComposite scrolledComposite = findScrolledComposite();
for (String id : FileCommPartner.getAllFileCommPartnersArray()) {
createNewFileCommPartnerComposite(id, null, scrolledComposite);
}
}
public void createNewFileCommPartnerComposite(String id, String name,
ScrolledComposite scrolledComposite){
FileCommPartner fileCommPartner = new FileCommPartner(id);
if (name != null) {
fileCommPartner.getSettings().set(fileCommPartner.getFileTransferName(), name);
}
fileCommPartnerComposites
.add(new FileCommPartnerComposite(this, scrolledComposite, editorParent,
fileCommPartner));
}
private ScrolledComposite findScrolledComposite(){
Composite parent = editorParent;
for (int i = 0; i < 10; i++) {
parent = parent.getParent();
if (parent instanceof ScrolledComposite) {
return (ScrolledComposite) parent;
}
}
return null;
}
@Override
public boolean performOk(){
for (FileCommPartnerComposite fileCommPartnerComposite : fileCommPartnerComposites) {
fileCommPartnerComposite.save();
}
CoreHub.userCfg.flush();
CoreHub.globalCfg.flush();
CoreHub.localCfg.flush();
return super.performOk();
}
/**
* Initialize the preferference page.
*/
public void init(IWorkbench workbench){
setPreferenceStore(
new SettingsPreferenceStore(FileCommPartner.isFileTransferGlobalConfigured()
? CoreHub.globalCfg : CoreHub.localCfg));
}
}