package com.onpositive.gae.baseviewer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
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.TableItem;
import org.eclipse.ui.IWorkbenchPropertyPage;
import org.eclipse.ui.dialogs.PropertyPage;
public class WorkbenchPropertyPage1 extends PropertyPage implements
IWorkbenchPropertyPage {
private TableViewer tv;
public WorkbenchPropertyPage1() {
}
protected Control createContents(Composite parent) {
tv = new TableViewer(parent);
Composite c = new Composite(parent, SWT.NONE);
GridLayout ll = new GridLayout(2, true);
ll.marginWidth=0;
c.setLayout(ll);
Composite b=new Composite(c, SWT.NONE);
GridLayout layout = new GridLayout(2,true);
layout.marginHeight=0;
layout.marginWidth=0;
b.setLayout(layout);
Button add = new Button(b, SWT.NONE);
add.setLayoutData(GridDataFactory.fillDefaults().create());
add.setText("Add");
add.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
InputDialog inputDialog = new InputDialog(getControl()
.getShell(), "Kind:", "Type new kind here:", "",
new IInputValidator() {
public String isValid(String newText) {
if (newText.trim().length() == 0) {
return "Kind may not be empty string";
}
return null;
}
});
int open = inputDialog.open();
if (open == Dialog.OK) {
tv.add(inputDialog.getValue());
}
super.widgetSelected(e);
}
});
final Button remove = new Button(b, SWT.NONE);
remove.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
IStructuredSelection ts = (IStructuredSelection) tv
.getSelection();
tv.remove(ts.getFirstElement());
}
});
remove.setLayoutData(GridDataFactory.fillDefaults().create());
remove.setText("Remove");
remove.setEnabled(false);
tv.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
remove.setEnabled(!event.getSelection().isEmpty());
}
});
tv.setContentProvider(new ArrayContentProvider());
try {
tv.setInput(AnnotationsStorage
.getKnownKinds((IProject) getElement().getAdapter(
IProject.class)));
tv.setLabelProvider(new LabelProvider() {
public Image getImage(Object element) {
return BaseImages.entityImage;
}
});
} catch (CoreException e) {
Activator.log(e);
}
return tv.getTable();
}
public boolean performOk() {
TableItem[] items = tv.getTable().getItems();
String[] result = new String[items.length];
for (int a = 0; a < items.length; a++) {
result[a] = (String) items[a].getData();
}
;
try {
AnnotationsStorage.setKnownKinds((IProject) getElement()
.getAdapter(IProject.class), result);
} catch (CoreException e) {
Activator.log(e);
return false;
}
return true;
}
}