# HG changeset patch # User dwinter # Date 1294655883 -3600 # Node ID 6e7bb34675315ca594b824522bb024c215ebe7bd # Parent 1a7940ac51690ca5b62e0a3bed5225e6bed80e39 new property view diff -r 1a7940ac5169 -r 6e7bb3467531 .classpath --- a/.classpath Wed Jan 05 14:04:58 2011 +0100 +++ b/.classpath Mon Jan 10 11:38:03 2011 +0100 @@ -3,13 +3,6 @@ - - - - - - - diff -r 1a7940ac5169 -r 6e7bb3467531 META-INF/MANIFEST.MF --- a/META-INF/MANIFEST.MF Wed Jan 05 14:04:58 2011 +0100 +++ b/META-INF/MANIFEST.MF Mon Jan 10 11:38:03 2011 +0100 @@ -9,7 +9,8 @@ org.eclipse.jface.text, org.eclipse.core.resources, org.eclipse.ui.editors, - org.eclipse.ui.ide + org.eclipse.ui.ide, + org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ClassPath: libs/commons-lang-2.3.jar, diff -r 1a7940ac5169 -r 6e7bb3467531 build.properties --- a/build.properties Wed Jan 05 14:04:58 2011 +0100 +++ b/build.properties Mon Jan 10 11:38:03 2011 +0100 @@ -1,4 +1,3 @@ -source.. = src/ output.. = bin/ bin.includes = plugin.xml,\ META-INF/,\ @@ -6,4 +5,6 @@ icons/,\ libs/commons-lang-2.3.jar,\ libs/jdom-1.0.jar,\ - libs/jaxen-1.1.1.jar + libs/jaxen-1.1.1.jar,\ + plugin_customization.ini +source.. = src/ diff -r 1a7940ac5169 -r 6e7bb3467531 plugin.xml --- a/plugin.xml Wed Jan 05 14:04:58 2011 +0100 +++ b/plugin.xml Mon Jan 10 11:38:03 2011 +0100 @@ -119,5 +119,38 @@ class="de.mpg.mpiwg.itgroup.digilib.plugin.PluginPreferenceInitializer"> + + + + + + + + + + + + + + + + + + + diff -r 1a7940ac5169 -r 6e7bb3467531 plugin_customization.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin_customization.ini Mon Jan 10 11:38:03 2011 +0100 @@ -0,0 +1,1 @@ +org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP = false diff -r 1a7940ac5169 -r 6e7bb3467531 src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImage.java --- a/src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImage.java Wed Jan 05 14:04:58 2011 +0100 +++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImage.java Mon Jan 10 11:38:03 2011 +0100 @@ -165,6 +165,7 @@ String queryString = StringUtils.join(queryArray,"&"); String stringUrl=baseUrl+"?"+queryString; + return new URL(stringUrl); } @@ -194,6 +195,7 @@ setNewURL(createUrlFromParameter(dp)); setSelection(new StructuredSelection(this)); DigilibLinkEditorObservable.INSTANCE.imageHasChanged(this); + } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -227,6 +229,7 @@ public Object getAdapter(Class adapter) { if (adapter == IPropertySource.class) return new DigiImageProperties(this); + return null; } @@ -262,7 +265,6 @@ public void setSelection(ISelection selection) { for (ISelectionChangedListener sl: selectionChangeListener){ - SelectionChangedEvent event = new SelectionChangedEvent(this, selection); sl.selectionChanged(event); @@ -272,6 +274,7 @@ } + } diff -r 1a7940ac5169 -r 6e7bb3467531 src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImageProperties.java --- a/src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImageProperties.java Wed Jan 05 14:04:58 2011 +0100 +++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImageProperties.java Mon Jan 10 11:38:03 2011 +0100 @@ -13,12 +13,12 @@ //private DigiImageParameter dp; private DigiImage digiImage; - private Map pt; + //private Map pt; public DigiImageProperties(DigiImage digiImage) { //this.dp = digiImage.getParameter(); this.digiImage = digiImage; - this.pt = digiImage.getParameter().createMapFromParameters(null); + //this.pt = digiImage.getParameter().createMapFromParameters(null); } public Object getEditableValue() { @@ -28,6 +28,7 @@ public IPropertyDescriptor[] getPropertyDescriptors() { + Map pt = digiImage.getParameter().createMapFromParameters(null); IPropertyDescriptor[] propertyDescriptors = new IPropertyDescriptor[pt.keySet().size()]; int i=0; @@ -51,6 +52,7 @@ } public Object getPropertyValue(Object id) { + Map pt = digiImage.getParameter().createMapFromParameters(null); return pt.get(id); } @@ -65,16 +67,30 @@ } public void setPropertyValue(Object id, Object value) { - + Map pt = digiImage.getParameter().createMapFromParameters(null); String oldValue = pt.get(id); if(oldValue.equals(value)){ return; } + pt.put((String)id, (String)value); digiImage.setParameter(new DigiImageParameter(pt)); digiImage.redraw(); } + + public void setPropertyValueNoDraw(Object id, Object value) { + + Map pt = digiImage.getParameter().createMapFromParameters(null); + String oldValue = pt.get(id); + if(oldValue.equals(value)){ + return; + } + + + pt.put((String)id, (String)value); + digiImage.setParameter(new DigiImageParameter(pt)); + } } diff -r 1a7940ac5169 -r 6e7bb3467531 src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImagePropertySection.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImagePropertySection.java Mon Jan 10 11:38:03 2011 +0100 @@ -0,0 +1,128 @@ +package de.mpg.mpiwg.itgroup.digilib.digiImage.properties; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CLabel; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.views.properties.IPropertySource; +import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection; +import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants; +import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; +import org.eclipse.jface.util.Assert; + +import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImage; +import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImageParameter; + +public class DigiImagePropertySection extends AbstractPropertySection { + + private DigiImage digiImage; + private Map texts = new HashMap(); + + + private Map listeners = new HashMap(); + private Button button; + + + + + + + public void createControls(Composite parent, + TabbedPropertySheetPage aTabbedPropertySheetPage) { + super.createControls(parent, aTabbedPropertySheetPage); + + DigiImageParameter dp = new DigiImageParameter(""); + GridLayout gridLayout = new GridLayout(1,false); + parent.setLayout(gridLayout); + for (String key: dp.createMapFromParameters(null).keySet()){ + + Composite composite = getWidgetFactory() + .createFlatFormComposite(parent); + FormData data; + + Text t = getWidgetFactory().createText(composite, ""); + texts.put(key, t); + data = new FormData(); + data.left = new FormAttachment(0, STANDARD_LABEL_WIDTH); + data.right = new FormAttachment(100, 0); + data.top = new FormAttachment(0, ITabbedPropertyConstants.VSPACE); + t.setLayoutData(data); + + + CLabel labelLabel = getWidgetFactory() + .createCLabel(composite, key); //$NON-NLS-1$ + data = new FormData(); + data.left = new FormAttachment(0, 0); + data.right = new FormAttachment(t, + -ITabbedPropertyConstants.HSPACE); + data.top = new FormAttachment(t, 0, SWT.CENTER); + labelLabel.setLayoutData(data); + } + Composite composite = getWidgetFactory() + .createFlatFormComposite(parent); + button = getWidgetFactory().createButton(composite, "redraw", SWT.None); + + } + + public void setInput(IWorkbenchPart part, ISelection selection) { + super.setInput(part, selection); + + Assert.isTrue(selection instanceof IStructuredSelection); + Object input = ((IStructuredSelection) selection).getFirstElement(); + Assert.isTrue(input instanceof DigiImage); + this.digiImage = (DigiImage) input; + + Map pms = digiImage.getParameter().createMapFromParameters(null); + + for(String key: digiImage.getParameter().createMapFromParameters(null).keySet()){ + + + ModifyListener listener = new PropertyListener(key,digiImage); + + texts.get(key).addModifyListener(listener); + listeners.put(key, listener); + } + button.addMouseListener(new RedrawButtonListener(digiImage,texts)); + + } + + public void refresh() { + + DigiImageProperties properties = (DigiImageProperties) digiImage + .getAdapter(IPropertySource.class); + + for(String key: texts.keySet()){ + + Text labelText=texts.get(key); + labelText.removeModifyListener(listeners.get(key)); + + labelText.setText((String)properties.getPropertyValue(key)); + labelText.addModifyListener(listeners.get(key)); + + } + super.refresh(); + } + + @Override + public void aboutToBeShown() { + System.out.println("about to be shown"); + + + super.aboutToBeShown(); + } +} diff -r 1a7940ac5169 -r 6e7bb3467531 src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/PropertyListener.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/PropertyListener.java Mon Jan 10 11:38:03 2011 +0100 @@ -0,0 +1,35 @@ +package de.mpg.mpiwg.itgroup.digilib.digiImage.properties; + +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.views.properties.IPropertySource; + +import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImage; + +public class PropertyListener implements ModifyListener { + + private String key; + private DigiImage digiImage; + public PropertyListener(String key, DigiImage digiImage){ + this.key = key; + this.digiImage = digiImage; + } + + + + public void modifyText(ModifyEvent event) { + DigiImageProperties properties = (DigiImageProperties) digiImage + .getAdapter(IPropertySource.class); + Text t = (Text)event.getSource(); + String c = t.getText(); + System.out.println(c); + + properties.setPropertyValueNoDraw(key, (String)c); + } + + + + } + + diff -r 1a7940ac5169 -r 6e7bb3467531 src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/RedrawButtonListener.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/RedrawButtonListener.java Mon Jan 10 11:38:03 2011 +0100 @@ -0,0 +1,47 @@ +package de.mpg.mpiwg.itgroup.digilib.digiImage.properties; + +import java.util.Map; + +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.MouseListener; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.views.properties.IPropertySource; + +import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImage; + +public class RedrawButtonListener implements MouseListener { + + + private DigiImage digiImage; + private Map texts; + + public RedrawButtonListener(DigiImage digiImage, Map texts) { + this.digiImage=digiImage; + this.texts=texts; + } + + public void mouseDoubleClick(MouseEvent e) { + // TODO Auto-generated method stub + + } + + public void mouseDown(MouseEvent e) { + // TODO Auto-generated method stub + + } + + public void mouseUp(MouseEvent e) { + +// DigiImageProperties properties = (DigiImageProperties) digiImage +// .getAdapter(IPropertySource.class); +// +// +// for (String key: texts.keySet()){ +// properties.setPropertyValue(key, (String)texts.get(key).getText()); +// +// } + digiImage.redraw(); + } + +} diff -r 1a7940ac5169 -r 6e7bb3467531 src/de/mpg/mpiwg/itgroup/digilib/plugin/editors/DigilibLinkEditorPart.java --- a/src/de/mpg/mpiwg/itgroup/digilib/plugin/editors/DigilibLinkEditorPart.java Wed Jan 05 14:04:58 2011 +0100 +++ b/src/de/mpg/mpiwg/itgroup/digilib/plugin/editors/DigilibLinkEditorPart.java Mon Jan 10 11:38:03 2011 +0100 @@ -16,18 +16,24 @@ import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.IPageLayout; +import org.eclipse.ui.IPartService; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; +import org.eclipse.ui.internal.WWinPartService; import org.eclipse.ui.part.EditorPart; +import org.eclipse.ui.views.properties.IPropertySheetPage; import org.eclipse.ui.views.properties.PropertySheet; import org.eclipse.ui.views.properties.PropertySheetPage; +import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor; +import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; import org.jdom.JDOMException; import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImage; import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImageController; import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImageParameter; import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiNav; +import de.mpg.mpiwg.itgroup.digilib.plugin.Activator; import de.mpg.mpiwg.itgroup.indexMeta.Utils.ParseIndexMeta; /** @@ -36,10 +42,12 @@ * @author dwinter * */ -public class DigilibLinkEditorPart extends EditorPart implements Observer{ +public class DigilibLinkEditorPart extends EditorPart implements Observer, ITabbedPropertySheetPageContributor{ private Composite mainComposite; private ScrolledComposite sc; + private boolean isDirty; + private TabbedPropertySheetPage tp=null; @Override public void doSave(IProgressMonitor monitor) { // TODO Auto-generated method stub @@ -62,8 +70,7 @@ @Override public boolean isDirty() { - // TODO Auto-generated method stub - return false; + return isDirty; } @Override @@ -131,6 +138,7 @@ new DigiNav(mainComposite,SWT.NONE,digiImageController); getSite().setSelectionProvider(digiImage); + //StructuredSelection strucSel = new StructuredSelection(digiImage); digiImage.setSelection(new StructuredSelection(digiImage)); sc.setMinSize(mainComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); @@ -153,15 +161,15 @@ mainComposite.pack(); sc.setMinSize(mainComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); sc.layout(); - - - //refresh the property view. - IWorkbenchPage page = getSite().getPage(); + isDirty=true; + firePropertyChange(PROP_DIRTY); - IViewPart view = page.findView(IPageLayout.ID_PROP_SHEET); + //Object[] ls = getListeners(); + //System.out.println(ls); - ((PropertySheetPage)((PropertySheet)view).getCurrentPage()).refresh(); - //sc.pack(); + if (tp!=null) + tp.refresh(); + } else if (Integer.class.isInstance(arg)){ int b = (Integer) arg; @@ -173,7 +181,19 @@ } + + public String getContributorId() { + String contribId = getSite().getId(); + return contribId; + } - + public Object getAdapter(Class adapter) { + if (adapter == IPropertySheetPage.class){ + + tp = new TabbedPropertySheetPage(this); + return tp; + } + return super.getAdapter(adapter); + } }