/*******************************************************************************
* Copyright (c) 2013 MEDEVIT.
* 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:
* T. Huster - initial API and implementation
******************************************************************************/
package at.medevit.elexis.weblinks.preferences;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
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.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.weblinks.model.WebLinkElement;
import at.medevit.elexis.weblinks.model.WebLinkElementUtil;
public class WebLinkPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
private List<WebLinkElement> elements;
private List<WebLinkEditor> editors = new ArrayList<WebLinkEditor>();
private Composite editorsComposite;
private Composite prefAreaComposite;
@Override
public void init(IWorkbench workbench){
elements = WebLinkElementUtil.loadElements();
}
@Override
protected Control createContents(Composite parent){
prefAreaComposite = new Composite(parent, SWT.NONE);
prefAreaComposite.setLayout(new GridLayout());
Button addBtn = new Button(prefAreaComposite, SWT.PUSH);
addBtn.setText(Messages.WebLinkPreferencePage_0);
addBtn.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e){
elements.add(new WebLinkElement(Long.toString(Calendar.getInstance()
.getTimeInMillis())));
refreshEditors();
}
@Override
public void widgetDefaultSelected(SelectionEvent e){
}
});
editorsComposite = new Composite(prefAreaComposite, SWT.NONE);
editorsComposite.setLayout(new GridLayout());
editorsComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
refreshEditors();
return prefAreaComposite;
}
public void refreshEditors(){
// remove old editors
for (WebLinkEditor editor : editors) {
editor.dispose();
}
// create new editors
for (WebLinkElement element : elements) {
WebLinkEditor editor = new WebLinkEditor(element, this, editorsComposite, SWT.NONE);
editor.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
editors.add(editor);
}
prefAreaComposite.layout(true, true);
}
@Override
public boolean performOk(){
WebLinkElementUtil.saveElements(elements);
return true;
}
public List<WebLinkElement> getElements(){
return elements;
}
}