changeset 25:6e7bb3467531

new property view
author dwinter
date Mon, 10 Jan 2011 11:38:03 +0100
parents 1a7940ac5169
children 183c3e96f6c3
files .classpath META-INF/MANIFEST.MF build.properties plugin.xml plugin_customization.ini src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImage.java src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImageProperties.java src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImagePropertySection.java src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/PropertyListener.java src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/RedrawButtonListener.java src/de/mpg/mpiwg/itgroup/digilib/plugin/editors/DigilibLinkEditorPart.java
diffstat 11 files changed, 303 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/.classpath	Wed Jan 05 14:04:58 2011 +0100
+++ b/.classpath	Mon Jan 10 11:38:03 2011 +0100
@@ -3,13 +3,6 @@
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/info.textgrid.lab.linkeditor.mip"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/info.textgrid.lab.linkeditor.mip.component"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/info.textgrid.lab.linkeditor.controller"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/info.textgrid.lab.linkeditor.model"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/info.textgrid.lab.linkeditor.rch.ept.libraries"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/info.textgrid.lab.linkeditor.rcp_linkeditor"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/info.textgrid.lab.linkeditor.tools"/>
 	<classpathentry kind="lib" path="libs/commons-lang-2.3.jar"/>
 	<classpathentry kind="lib" path="libs/jdom-1.0.jar"/>
 	<classpathentry kind="lib" path="libs/jaxen-1.1.1.jar"/>
--- 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,
--- 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/
--- 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">
       </initializer>
    </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+      <propertyContributor
+            contributorId="de.mpg.mpiwg.itgroup.digilib.plugin.digilibLinkEditor">
+         <propertyCategory
+               category="main"></propertyCategory>
+      </propertyContributor>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
+      <propertyTabs
+            contributorId="de.mpg.mpiwg.itgroup.digilib.plugin.digilibLinkEditor">
+         <propertyTab
+               category="main"
+               id="de.mpg.mpiwg.itgroup.digilib.plugin.digiImageTab"
+               label="digimage">
+         </propertyTab>
+      </propertyTabs>
+   </extension>
+   <extension
+         point="org.eclipse.ui.views.properties.tabbed.propertySections">
+      <propertySections
+            contributorId="de.mpg.mpiwg.itgroup.digilib.plugin.digilibLinkEditor">
+         <propertySection
+               class="de.mpg.mpiwg.itgroup.digilib.digiImage.properties.DigiImagePropertySection"
+               id="de.mpg.mpiwg.itgroup.digilib.plugin.propertySection"
+               tab="de.mpg.mpiwg.itgroup.digilib.plugin.digiImageTab">
+            <input
+                  type="de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImage">
+            </input>
+         </propertySection>
+      </propertySections>
+   </extension>
 
 </plugin>
--- /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
--- 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 @@
 	}
 
 	
+	
 }
 
 
--- 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<String, String> pt;
+	//private Map<String, String> 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<String, String> 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<String, String> pt = digiImage.getParameter().createMapFromParameters(null);
 		return pt.get(id);
 	}
 
@@ -65,16 +67,30 @@
 	}
 
 	public void setPropertyValue(Object id, Object value) {
-		
+		Map<String, String> 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<String, String> 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));
+	}
 
 }
--- /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<String,Text> texts = new HashMap<String,Text>();
+		
+		
+		private Map<String,ModifyListener> listeners = new HashMap<String,ModifyListener>();
+		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<String, String> 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();
+	        }
+}
--- /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);
+           }
+		
+		  
+		   
+	}
+
+
--- /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<String, Text> texts;
+
+	public RedrawButtonListener(DigiImage digiImage, Map<String, Text> 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();
+	}
+
+}
--- 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);
+	    }
 	
 }