Mercurial > hg > de.mpg.mpiwg.itgroup.digilib.core
view src/de/mpg/mpiwg/itgroup/digilib/digiImage/TextGridDigiImage.java @ 27:ee955cf6c9c5
first commit
author | dwinter |
---|---|
date | Fri, 17 Jun 2011 14:24:34 +0200 |
parents | |
children | fbcf122a6a24 |
line wrap: on
line source
package de.mpg.mpiwg.itgroup.digilib.digiImage; import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibService; import info.textgrid.namespaces.middleware.digilib.services.digilibservice.DigilibServicePortType; import java.io.ByteArrayInputStream; 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.List; import java.util.Map; import javax.xml.ws.Holder; import org.apache.commons.lang.StringUtils; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import de.mpg.mpiwg.itgroup.digilib.manipulator.extensions.ZoomAreaRectangleListener; import de.mpg.mpiwg.itgroup.digilib.plugin.editors.DigilibLinkEditorObservable; public class TextGridDigiImage implements IDigiImage { //private URL url; private Composite parent; private DigiImageParameter dp; private String baseUrl; private Label label; private ZoomAreaRectangleListener rectangleListener=null; private List<ISelectionChangedListener> selectionChangeListener = new ArrayList<ISelectionChangedListener>(); private DigilibService service; private DigilibServicePortType port; /* some parameters should not occur in the URL constructed by {@link #createUrlFromParameter(DigiImageParameter)} if set to negative values. * */ private static String[] omitIfNegativeArray = {"dw","dh","ddpi","ddpix","ddpiy"}; private static List<String> omitIfNegative = Arrays.asList(omitIfNegativeArray); String logParam = null; // Holder for return data Holder<String> mimeType = new Holder<String>(); Holder<byte[]> imageData = new Holder<byte[]>(); Holder<Integer> width = new Holder<Integer>(); Holder<Integer> height = new Holder<Integer>(); private String sid; public TextGridDigiImage(Composite parent, int style, DigiImageParameter dp, String sid) { label = new Label(parent, style); this.parent = parent; this.dp=dp; try { service = new DigilibService(new URL("http://localhost:8080/digilibservice-service/service?wsdl")); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } port = service.getDigilibServicePort(); this.sid=sid; this.dp=dp; try { createNewImage(createQueryFromParameter(dp)); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } // TODO Auto-generated constructor stub } public void addSelectionChangedListener(ISelectionChangedListener listener) { selectionChangeListener.add(listener); } public ISelection getSelection() { return new StructuredSelection(this); } public void removeSelectionChangedListener( ISelectionChangedListener listener) { selectionChangeListener.remove(listener); } public void setSelection(ISelection selection) { for (ISelectionChangedListener sl: selectionChangeListener){ SelectionChangedEvent event = new SelectionChangedEvent(this, selection); sl.selectionChanged(event); } } public DigiImageParameter getParameter() { return dp; } public void setParameter(DigiImageParameter dp) { this.dp=dp; } public void redraw() { try { createNewImage(createQueryFromParameter(dp)); setSelection(new StructuredSelection(this)); DigilibLinkEditorObservable.INSTANCE.imageHasChanged(this); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void createNewImage(String query) { port.getScaledImage(sid,dp.fn, query, logParam, mimeType, imageData, width, height); Image img = new Image(parent.getDisplay(),new ByteArrayInputStream(imageData.value)) ; //Label label = new Label(parent, SWT.None); label.setImage(img); label.setVisible(true); } private String createQueryFromParameter(DigiImageParameter dp) throws MalformedURLException { Map<String, String> qa = dp.createMapFromParameters(omitIfNegative); List<String> queryArray = new ArrayList<String>(); for(String key:qa.keySet()){ queryArray.add(key+"="+qa.get(key)); } String queryString = StringUtils.join(queryArray,"&"); String stringUrl=queryString; return stringUrl; } public Label getLabel() { return label; } public void setLabel(Label label) { this.label = label; } public ZoomAreaRectangleListener getRectangleListener() { return rectangleListener; } public void setRectangleListener(ZoomAreaRectangleListener rectangleListener) { this.rectangleListener = rectangleListener; } public Composite getParent() { return parent; } }