Mercurial > hg > de.mpg.mpiwg.itgroup.digilib.plugin
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; + } + +} + +