diff src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImage.java @ 1:83c58ea33792

first release (continued)
author dwinter
date Mon, 03 Jan 2011 09:11:25 +0100
parents
children e63a64652f4d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImage.java	Mon Jan 03 09:11:25 2011 +0100
@@ -0,0 +1,176 @@
+package de.mpg.mpiwg.itgroup.digilib.digiImage;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axis2.databinding.types.soapencoding.Array;
+import org.apache.commons.lang.StringUtils;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import de.mpg.mpiwg.itgroup.digilib.manipulator.extensions.RectangleListener;
+
+
+
+
+public class DigiImage implements IDigiImage {
+	
+	private static String[] omitIfNegativeArray = {"dw","dh","ddpi","ddpix","ddpiy"};
+	private static List<String> omitIfNegative = Arrays.asList(omitIfNegativeArray);
+		
+	private Label label;
+	public Label getLabel() {
+		return label;
+	}
+
+	public void setLabel(Label label) {
+		this.label = label;
+	}
+
+	private URL url;
+	private Composite parent;
+	private String baseUrl="http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler";
+	private DigiImageParameter dp;
+	
+	
+	public DigiImage(Composite parent, int style, DigiImageParameter dp) {
+		//super(parent,style);
+		label = new Label(parent, style);
+		this.parent = parent;
+		this.dp=dp;
+		try {
+			setNewURL(createUrlFromParameter(dp));
+		} catch (MalformedURLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+	}
+
+	private void setNewURL(URL url) {
+		this.url = url;
+		// TODO Auto-generated constructor stub
+	
+		InputStream is;
+		try {
+			is = url.openStream();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			return;
+		}
+		Image img = new Image(parent.getDisplay(),is);
+		//Label label = new Label(parent, SWT.None);
+		label.setImage(img);
+		
+		label.setVisible(true);
+	}
+
+	
+	public Composite getParent() {
+		return parent;
+	}
+
+
+	private URL createUrlFromParameter(DigiImageParameter dp) throws MalformedURLException{
+		URL url;
+		Map<String,String> qa= new HashMap<String,String>();
+		
+		setPm(qa,"fn",dp.getFn());
+		setPm(qa,"pn",dp.getPn());
+		
+		setPm(qa,"dw",dp.getDw());
+		setPm(qa,"dh",dp.getDh());
+		
+		setPm(qa,"wx",dp.getWx());
+		setPm(qa,"wy",dp.getWy());
+		setPm(qa,"ws",dp.getWs());
+		setPm(qa,"ww",dp.getWw());
+		setPm(qa,"wh",dp.getWh());
+		
+		
+		setPm(qa,"mo",dp.getMo());
+		
+		setPm(qa,"cont",dp.getCont());
+		setPm(qa,"brgt",dp.getBrgt());
+		
+		setPm(qa,"rot",dp.getRot());
+		
+		setPm(qa,"rgba",dp.getRgba());
+		setPm(qa,"rgbm",dp.getRgbm());
+		
+		setPm(qa,"ddpi",dp.getDdpi());
+		setPm(qa,"ddpix",dp.getDdpix());
+		setPm(qa,"ddpiy",dp.getDdpiy());
+		
+		List<String> queryArray = new ArrayList<String>();
+		for(String key:qa.keySet()){
+			queryArray.add(key+"="+qa.get(key));
+		}
+		String queryString = StringUtils.join(queryArray,"&");
+		
+		String stringUrl=baseUrl+"?"+queryString;
+		return new URL(stringUrl);
+	}
+	
+	private void setPm(Map<String, String> qa, String key, Object value){
+		String v;
+		if (String.class.isInstance(value)){
+			v=(String)value;
+			qa.put(key, v);
+		} else if (Integer.class.isInstance(value)){
+			if (!((Integer)value==-1 & omitIfNegative.indexOf(key)>-1)) { // nicht vernachlaessigen
+				v=String.valueOf(value);
+				qa.put(key, v);
+			}
+		} else {
+			v=String.valueOf(value);
+			qa.put(key, v);
+		}
+		
+	}
+
+	public DigiImageParameter getParameter() {
+		
+		return dp;
+	}
+
+	public void setParameter(DigiImageParameter dp) {
+		this.dp=dp;
+		
+	}
+	
+	public void redraw(){
+		try {
+			setNewURL(createUrlFromParameter(dp));
+		} catch (MalformedURLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+	
+	private RectangleListener rectangleListener=null;
+	
+	public RectangleListener getRectangleListener() {
+		// TODO Auto-generated method stub
+		return rectangleListener;
+	}
+
+	public void setRectangleListener(RectangleListener rectangleListener) {
+		this.rectangleListener = rectangleListener;
+	}
+
+}
+
+