view src/de/mpg/mpiwg/itgroup/digilib/plugin/editors/DigilibLinkEditorPart.java @ 1:83c58ea33792

first release (continued)
author dwinter
date Mon, 03 Jan 2011 09:11:25 +0100
parents
children e63a64652f4d
line wrap: on
line source

package de.mpg.mpiwg.itgroup.digilib.plugin.editors;


import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Observable;
import java.util.Observer;

import info.textgrid.lab.linkeditor.mip.gui.ImagePanel;

import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Scale;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;
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.digiImage.exceptions.DigilibInputTypeException;
import de.mpg.mpiwg.itgroup.indexMeta.Utils.ParseIndexMeta;

/**
 * 
 * @author dwinter
 *
 */
public class DigilibLinkEditorPart extends EditorPart implements IResourceChangeListener, Observer{

	private ImagePanel imagePanel;
	private Composite mainComposite;
	private ScrolledComposite sc;

	public void resourceChanged(IResourceChangeEvent event) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doSave(IProgressMonitor monitor) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doSaveAs() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void init(IEditorSite site, IEditorInput input)
			throws PartInitException {
		setInput(input);
		setSite(site);
		
	}

	@Override
	public boolean isDirty() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean isSaveAsAllowed() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void createPartControl(Composite frame) {
	
		sc = new ScrolledComposite(frame, SWT.H_SCROLL | SWT.V_SCROLL);
		mainComposite = new Composite(sc,SWT.None);
		
		GridLayout imageLayout = new GridLayout(2,false);
		mainComposite.setLayout(imageLayout);
		sc.setContent(mainComposite);
		//sc.setMinSize(400, 400);
		
		URL url;

		DigilibLinkEditorInput input= (DigilibLinkEditorInput) getEditorInput();
		String path="";
		if (input.getType()==DigilibLinkEditorInput.INDEX_META){
			ParseIndexMeta im;
			try {
				im = new ParseIndexMeta(input.getIndexMetaFile());
			} catch (JDOMException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return;
			} catch (CoreException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return;
			}
			try {
				path=im.getImagePath();
			} catch (JDOMException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return;
			}
			if (path==null)
				return;
		} else {
			//TODO: issue warning that type cannot be solved.
			return;
		}
		
		
		path=path.replace("/mpiwg/online", "");
		DigiImageParameter dp = new DigiImageParameter(path);
		dp.setDh(500);
		dp.setDw(500);
		
		
		DigiImage digiImage = new DigiImage(mainComposite, SWT.BORDER, dp);
		DigiImageController digiImageController = new DigiImageController(digiImage);
		//imageComp.setBackgroundImage(img);		
		DigiNav digiNav = new DigiNav(mainComposite,SWT.BORDER,digiImageController);
		
		sc.setMinSize(mainComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
		sc.setExpandHorizontal(true);
	    sc.setExpandVertical(true);
	    sc.layout();
		DigilibLinkEditorObservable.INSTANCE.addObserver(this);
		
	}

	@Override
	public void setFocus() {
		// TODO Auto-generated method stub
		
	}

	public void update(Observable o, Object arg) {
		if (DigiImage.class.isInstance(arg)){
			mainComposite.pack();
			sc.setMinSize(mainComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
			sc.layout();
			//sc.pack();
			
		} else if (Integer.class.isInstance(arg)){
			int b = (Integer) arg;
			
			Cursor waitCursor = new Cursor(mainComposite.getDisplay(),b);
			mainComposite.setCursor(waitCursor);
		
			
		}
		
	}


	
}