/*******************************************************************************
* Copyright (c) 2009, 2010 Innovation Gate GmbH.
* 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:
* Innovation Gate GmbH - initial API and implementation
******************************************************************************/
package de.innovationgate.eclipse.wgadesigner.preferences;
import org.eclipse.jface.dialogs.Dialog;
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.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import de.innovationgate.eclipse.utils.BeanListPreferencesStore;
import de.innovationgate.eclipse.utils.ui.EditableTableControl;
import de.innovationgate.eclipse.wgadesigner.WGADesignerPlugin;
import de.innovationgate.eclipse.wgadesigner.dialogs.AddTemplateDialog;
import de.innovationgate.eclipse.wgadesigner.models.DesignTemplate;
import de.innovationgate.eclipse.wgadesigner.models.DesignTemplatesModel;
public class WGADesignTemplates extends PreferencePage implements IWorkbenchPreferencePage {
private Composite _container;
private EditableTableControl<DesignTemplate> _tableControl;
private DesignTemplatesModel _model;
private BeanListPreferencesStore<DesignTemplate> _store;
public WGADesignTemplates() {
// TODO edit Descriptiontext
setDescription("WGA Templates");
// noDefaultAndApplyButton();
}
@Override
protected Control createContents(Composite parent) {
_container = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 1;
layout.marginWidth = 0;
layout.marginHeight = 0;
layout.horizontalSpacing = 0;
layout.verticalSpacing = 0;
_container.setLayout(layout);
_tableControl = new EditableTableControl<DesignTemplate>(_container, SWT.NONE);
_tableControl.setLayoutData(new GridData(GridData.FILL_BOTH));
String[] columnNames = new String[] { "Template name", "path" };
_store = WGADesignerPlugin.getDefault().getDesginTemplateStore();
_store.load();
_model = new DesignTemplatesModel(_store.getBeans());
_tableControl.init(columnNames, _model);
_tableControl.getButton(EditableTableControl.BUTTON_ADD).addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
handleAdd();
}
});
_tableControl.getButton(EditableTableControl.BUTTON_REMOVE).addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
handleRemove();
}
});
_tableControl.getTable().addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (_tableControl.getTable().getSelectionCount() > 0) {
DesignTemplate design = (DesignTemplate) _tableControl.getTable().getSelection()[0].getData();
if (PreferenceInitializer.getDefaultTemplates().contains(design)) {
_tableControl.getButton(EditableTableControl.BUTTON_REMOVE).setEnabled(false);
} else {
_tableControl.getButton(EditableTableControl.BUTTON_REMOVE).setEnabled(true);
}
} else {
_tableControl.getButton(EditableTableControl.BUTTON_REMOVE).setEnabled(false);
}
}
});
return _container;
}
private void handleAdd() {
AddTemplateDialog addDialog = new AddTemplateDialog(getShell());
addDialog.open();
if (addDialog.getReturnCode() == Dialog.OK) {
_model.add(addDialog.getDesign());
}
// if (addDialog.isOk()) {
// _model.add(design);
// }
}
private void handleRemove() {
if (_tableControl.getTable().getSelectionCount() > 0) {
DesignTemplate design = (DesignTemplate) _tableControl.getTable().getSelection()[0].getData();
_model.remove(design);
}
}
public void init(IWorkbench workbench) {
// TODO Auto-generated method stub
}
public boolean performOk() {
_store.flush();
return true;
}
protected void performDefaults() {
//super.performDefaults();
_store.restoreDefault(false);
_model.refresh(_store.getBeans());
}
}