changeset 30:207dae29cc09

new tabs
author dwinter
date Mon, 10 Oct 2011 13:51:14 +0200
parents fbcf122a6a24
children abcce1110d84
files plugin.xml src/de/mpg/mpiwg/itgroup/digilib/digiImage/TextGridDigiImage.java src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImagePropertyTabImageDPI.java src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImagePropertyTabImageSize.java src/de/mpg/mpiwg/itgroup/digilib/plugin/editors/DigilibLinkEditorPart.java
diffstat 5 files changed, 196 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/plugin.xml	Wed Sep 14 14:41:31 2011 +0200
+++ b/plugin.xml	Mon Oct 10 13:51:14 2011 +0200
@@ -80,7 +80,12 @@
          <propertyTab
                category="main"
                id="de.mpg.mpiwg.itgroup.digilib.core.plugin.digiImageTab"
-               label="digimage">
+               label="DigiImage">
+         </propertyTab>
+         <propertyTab
+               category="main"
+               id="de.mpg.mpiwg.itgroup.digilib.core.dpiTab"
+               label="dpi">
          </propertyTab>
       </propertyTabs>
    </extension>
@@ -89,7 +94,7 @@
       <propertySections
             contributorId="de.mpg.mpiwg.itgroup.digilib.plugin.digilibLinkEditor">
          <propertySection
-               class="de.mpg.mpiwg.itgroup.digilib.digiImage.properties.DigiImagePropertySection"
+               class="de.mpg.mpiwg.itgroup.digilib.digiImage.properties.DigiImagePropertyTabImageSize"
                id="de.mpg.mpiwg.itgroup.digilib.core.plugin.propertySection"
                tab="de.mpg.mpiwg.itgroup.digilib.core.plugin.digiImageTab">
             <input
@@ -99,6 +104,17 @@
                   type="de.mpg.mpiwg.itgroup.digilib.digiImage.TextGridDigiImage">
             </input>
          </propertySection>
+         <propertySection
+               class="de.mpg.mpiwg.itgroup.digilib.digiImage.properties.DigiImagePropertyTabImageDPI"
+               id="de.mpg.mpiwg.itgroup.digilib.core.plugin.propertySection"
+               tab="de.mpg.mpiwg.itgroup.digilib.core.dpiTab">
+            <input
+                  type="de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImage">
+            </input>
+            <input
+                  type="de.mpg.mpiwg.itgroup.digilib.digiImage.TextGridDigiImage">
+            </input>
+         </propertySection>
       </propertySections>
    </extension>
    <extension
--- a/src/de/mpg/mpiwg/itgroup/digilib/digiImage/TextGridDigiImage.java	Wed Sep 14 14:41:31 2011 +0200
+++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/TextGridDigiImage.java	Mon Oct 10 13:51:14 2011 +0200
@@ -136,6 +136,7 @@
 			setSelection(new StructuredSelection(this));
 			DigilibLinkEditorObservable.INSTANCE.imageHasChanged(this);
 			
+			
 		} catch (MalformedURLException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImagePropertyTabImageDPI.java	Mon Oct 10 13:51:14 2011 +0200
@@ -0,0 +1,7 @@
+package de.mpg.mpiwg.itgroup.digilib.digiImage.properties;
+
+public class DigiImagePropertyTabImageDPI extends DigiImagePropertyTabImageSize {
+
+	public String labelString = "ddpi:ddpi;ddpix:ddpix;ddpiy:ddpiy";
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/properties/DigiImagePropertyTabImageSize.java	Mon Oct 10 13:51:14 2011 +0200
@@ -0,0 +1,163 @@
+package de.mpg.mpiwg.itgroup.digilib.digiImage.properties;
+
+import java.util.HashMap;
+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.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.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 de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImage;
+import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImageParameter;
+import de.mpg.mpiwg.itgroup.digilib.digiImage.IDigiImage;
+
+/**
+ * @author dwinter Shows the properties of a digiImage
+ * 
+ */
+public class DigiImagePropertyTabImageSize extends AbstractPropertySection {
+
+	private IDigiImage digiImage;
+	private Map<String, Text> texts = new HashMap<String, Text>();
+
+	private Map<String, ModifyListener> listeners = new HashMap<String, ModifyListener>();
+	private Button button;
+
+	
+	//private String labelString = "wh:wh;rgba:rgba;dW:dw;mo:mo;rot:rot;ddpi:ddpi;ddpix:ddpix;ddpiy:ddpiy;brgt:brgt;ws:ws;rgbm:rgbm;wy:wy;wx:ww;dh:dh;pn:pn;cont:cont;fn:fn";
+	public String labelString = "wh:wh;dw:dw;ws:ws;wy:wy;wx:ww;dh:dh";
+
+	private Map<String, String> parseLabelString(String labelString) {
+		HashMap<String, String> ret = new HashMap<String, String>();
+		String[] splitted = labelString.split(";");
+		for (int i = 0; i < splitted.length; i++) {
+			String entry = splitted[i];
+			String[] values = entry.split(":");
+			if (values.length == 2)
+				ret.put(values[0], values[1]);
+		}
+		return ret;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.tabbed.AbstractPropertySection#createControls
+	 * (org.eclipse.swt.widgets.Composite,
+	 * org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage)
+	 */
+	public void createControls(Composite parent,
+			TabbedPropertySheetPage aTabbedPropertySheetPage) {
+		super.createControls(parent, aTabbedPropertySheetPage);
+
+		Map<String, String> labels = parseLabelString(labelString);
+			
+		DigiImageParameter dp = new DigiImageParameter("");
+		GridLayout gridLayout = new GridLayout(1, false);
+		parent.setLayout(gridLayout);
+		
+		for (String key : dp.createMapFromParameters(null).keySet()) {
+			if (labels.containsKey(key)){
+				
+			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, labels.get(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);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.tabbed.AbstractPropertySection#setInput
+	 * (org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
+	 */
+	public void setInput(IWorkbenchPart part, ISelection selection) {
+		super.setInput(part, selection);
+
+		// Assert.isTrue(selection instanceof IStructuredSelection);
+		assert (IStructuredSelection.class.isInstance(selection) == true) : "wrong instance type";
+
+		Object input = ((IStructuredSelection) selection).getFirstElement();
+		// Assert.isTrue(input instanceof DigiImage);
+
+		assert (DigiImage.class.isInstance(input) == true) : "wrong instance type for input";
+		this.digiImage = (IDigiImage) input;
+
+		// Map<String, String> pms =
+		// digiImage.getParameter().createMapFromParameters(null);
+
+		Map<String, String> labels = parseLabelString(labelString);
+
+		for (String key : digiImage.getParameter()
+				.createMapFromParameters(null).keySet()) {
+			if (labels.containsKey(key)){
+			ModifyListener listener = new DigiImagePropertyListener(key,
+					digiImage);
+
+			texts.get(key).addModifyListener(listener);
+			listeners.put(key, listener);
+			}
+		}
+		button.addMouseListener(new RedrawButtonListener(digiImage, texts));
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.views.properties.tabbed.AbstractPropertySection#refresh()
+	 */
+	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();
+	}
+
+}
--- a/src/de/mpg/mpiwg/itgroup/digilib/plugin/editors/DigilibLinkEditorPart.java	Wed Sep 14 14:41:31 2011 +0200
+++ b/src/de/mpg/mpiwg/itgroup/digilib/plugin/editors/DigilibLinkEditorPart.java	Mon Oct 10 13:51:14 2011 +0200
@@ -39,6 +39,8 @@
  */
 public class DigilibLinkEditorPart extends EditorPart implements Observer, ITabbedPropertySheetPageContributor{
 
+	private static final int SIZE_DH = 1000;
+	private static final int SIZE_DW = 1000;
 	private Composite mainComposite;
 	private ScrolledComposite sc;
 	private boolean isDirty;
@@ -115,8 +117,8 @@
 				path=path.replace("/mpiwg/online", "");
 				DigiImageParameter dp = new DigiImageParameter(path);
 				dp.setType(input.getType());
-				dp.setDh(500);
-				dp.setDw(500);
+				dp.setDh(SIZE_DH);
+				dp.setDw(SIZE_DW);
 				digiImage = new DigiImage(mainComposite, SWT.BORDER, dp);
 			} catch (JDOMException e) {
 				// TODO Auto-generated catch block
@@ -129,8 +131,8 @@
 			path = input.getUri().toASCIIString();
 			DigiImageParameter dp = new DigiImageParameter(path);
 			dp.setType(input.getType());
-			dp.setDh(500);
-			dp.setDw(500);
+			dp.setDh(SIZE_DH);
+			dp.setDw(SIZE_DW);
 			digiImage = new TextGridDigiImage(mainComposite, SWT.BORDER, dp,input.getSid());
 			
 		} else {
@@ -174,7 +176,7 @@
 		/*
 		 * If the argument ist digiImage then rerender the editor and update the properties
 		 */
-		if (DigiImage.class.isInstance(arg)){
+		if (IDigiImage.class.isInstance(arg)){
 			mainComposite.pack();
 			sc.setMinSize(mainComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
 			sc.layout();