Mercurial > hg > de.mpg.mpiwg.itgroup.digilib.core
view src/de/mpg/mpiwg/itgroup/digilib/plugin/editors/DigilibLinkEditorPart.java @ 32:d7a43156a79b default tip
new tabs
author | dwinter |
---|---|
date | Mon, 10 Oct 2011 17:52:22 +0200 |
parents | 207dae29cc09 |
children |
line wrap: on
line source
package de.mpg.mpiwg.itgroup.digilib.plugin.editors; import java.io.IOException; import java.util.Observable; import java.util.Observer; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.graphics.Cursor; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.EditorPart; import org.eclipse.ui.views.properties.IPropertySheetPage; import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; 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.IDigiImage; import de.mpg.mpiwg.itgroup.digilib.digiImage.TextGridDigiImage; import de.mpg.mpiwg.itgroup.indexMeta.Utils.ParseIndexMeta; /** * Displays an image with digilib an allows image manipulation on the image. * * @author dwinter * */ 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; private TabbedPropertySheetPage tp=null; @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() { return isDirty; } @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); DigilibLinkEditorInput input= (DigilibLinkEditorInput) getEditorInput(); String path=""; IDigiImage digiImage; if (input.getType()==DigilibLinkEditorInput.INDEX_META){ ParseIndexMeta im; try { im = new ParseIndexMeta(input.getFile()); } 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(); path=path.replace("/mpiwg/online", ""); DigiImageParameter dp = new DigiImageParameter(path); dp.setType(input.getType()); dp.setDh(SIZE_DH); dp.setDw(SIZE_DW); digiImage = new DigiImage(mainComposite, SWT.BORDER, dp); } catch (JDOMException e) { // TODO Auto-generated catch block e.printStackTrace(); return; } if (path==null) return; } else if (input.getType()==DigilibLinkEditorInput.TEXTGRID){ path = input.getUri().toASCIIString(); DigiImageParameter dp = new DigiImageParameter(path); dp.setType(input.getType()); dp.setDh(SIZE_DH); dp.setDw(SIZE_DW); digiImage = new TextGridDigiImage(mainComposite, SWT.BORDER, dp,input.getSid()); } else { //TODO: issue warning that type cannot be solved. return; } DigiImageController digiImageController = new DigiImageController(digiImage); //imageComp.setBackgroundImage(img); new DigiNav(mainComposite,SWT.NONE,digiImageController); getSite().setSelectionProvider(digiImage); //StructuredSelection strucSel = new StructuredSelection(digiImage); digiImage.setSelection(new StructuredSelection(digiImage)); sc.setMinSize(mainComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); sc.setExpandHorizontal(true); sc.setExpandVertical(true); sc.layout(); DigilibLinkEditorObservable.INSTANCE.addObserver(this); //setSelection( digiImage); } @Override public void setFocus() { // TODO Auto-generated method stub } /* (non-Javadoc) * @see java.util.Observer#update(java.util.Observable, java.lang.Object) * Called from the observable */ public void update(Observable o, Object arg) { /* * If the argument ist digiImage then rerender the editor and update the properties */ if (IDigiImage.class.isInstance(arg)){ mainComposite.pack(); sc.setMinSize(mainComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); sc.layout(); isDirty=true; firePropertyChange(PROP_DIRTY); //Object[] ls = getListeners(); //System.out.println(ls); if (tp!=null) tp.refresh(); } else if (Integer.class.isInstance(arg)){ //if it is in integer then the argument is the status of the cursor int b = (Integer) arg; try { Cursor waitCursor = new Cursor(mainComposite.getDisplay(), b); mainComposite.setCursor(waitCursor); } catch (Exception e) { // TODO: handle exception } } } /* (non-Javadoc) * @see org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor#getContributorId() */ public String getContributorId() { String contribId = getSite().getId(); return contribId; } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#getAdapter(java.lang.Class) */ @SuppressWarnings("rawtypes") public Object getAdapter(Class adapter) { if (adapter == IPropertySheetPage.class){ tp = new TabbedPropertySheetPage(this); return tp; } return super.getAdapter(adapter); } }