Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 80599 Details for
Bug 155323
[IDE] Basic image viewer/editor
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
updated patch
clipboard.txt (text/plain), 30.40 KB, created by
Eugene Kuleshov
on 2007-10-17 15:09:20 EDT
(
hide
)
Description:
updated patch
Filename:
MIME Type:
Creator:
Eugene Kuleshov
Created:
2007-10-17 15:09:20 EDT
Size:
30.40 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ui.ide >Index: plugin.properties >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/plugin.properties,v >retrieving revision 1.108 >diff -u -r1.108 plugin.properties >--- plugin.properties 11 Sep 2007 20:49:28 -0000 1.108 >+++ plugin.properties 17 Oct 2007 19:07:43 -0000 >@@ -23,6 +23,19 @@ > KeysPreference.Description = Preferences related to keys, accelerator key bindings, key configurations and commands. > > Editors.WelcomeEditor = Welcome >+ >+Editors.ImageViewerEditor = Image Viewer >+Editors.ImageViewerEditor.ZoomIn.label = Zoom In >+Editors.ImageViewerEditor.ZoomIn.tooltip = Zoom in image >+Editors.ImageViewerEditor.ZoomOut.label = Zoom Out >+Editors.ImageViewerEditor.ZoomOut.tooltip = Zoom out image >+Editors.ImageViewerEditor.ZoomFit.label = Zoom Fit >+Editors.ImageViewerEditor.ZoomFit.tooltip = Zoom to fit >+Editors.ImageViewerEditor.ZoomOriginal.label = Original >+Editors.ImageViewerEditor.ZoomOriginal.tooltip = Original image size >+Editors.ImageViewerEditor.Rotate.label = Rotate >+Editors.ImageViewerEditor.Rotate.tooltip = Rotate image >+ > ImportExportWizards.Category.Basic = General > ExportWizards.FileSystem = File System > ExportWizards.Preferences = Preferences >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/plugin.xml,v >retrieving revision 1.202 >diff -u -r1.202 plugin.xml >--- plugin.xml 13 Sep 2007 12:27:25 -0000 1.202 >+++ plugin.xml 17 Oct 2007 19:07:43 -0000 >@@ -187,7 +187,115 @@ > contributorClass="org.eclipse.ui.internal.ide.dialogs.WelcomeEditorActionContributor" > id="org.eclipse.ui.internal.ide.dialogs.WelcomeEditor"> > </editor> >+ <editor >+ id="org.eclipse.ui.internal.ide.ImageViewerEditor" >+ class="org.eclipse.ui.internal.imageviewer.ImageViewerEditor" >+ icon="$nl$/icons/full/obj16/image_editor.gif" >+ default="false" >+ name="%Editors.ImageViewerEditor" >+ extensions="gif,jpg,jpeg,png,ico,bmp"/> > </extension> >+ >+ <extension point="org.eclipse.ui.commands"> >+ <command id="org.eclipse.ui.internal.imageviewer.ZoomIn" >+ defaultHandler="org.eclipse.ui.internal.imageviewer.ImageViewerHandler:zoomIn" >+ name="%Editors.ImageViewerEditor.ZoomIn.label" >+ description="%Editors.ImageViewerEditor.ZoomIn.tooltip"/> >+ <command id="org.eclipse.ui.internal.imageviewer.ZoomOut" >+ defaultHandler="org.eclipse.ui.internal.imageviewer.ImageViewerHandler:zoomOut" >+ name="%Editors.ImageViewerEditor.ZoomOut.label" >+ description="%Editors.ImageViewerEditor.ZoomOut.tooltip"/> >+ <command id="org.eclipse.ui.internal.imageviewer.ZoomFit" >+ defaultHandler="org.eclipse.ui.internal.imageviewer.ImageViewerHandler:zoomFit" >+ name="%Editors.ImageViewerEditor.ZoomFit.label" >+ description="%Editors.ImageViewerEditor.ZoomFit.tooltip"/> >+ <command id="org.eclipse.ui.internal.imageviewer.ZoomOriginal" >+ defaultHandler="org.eclipse.ui.internal.imageviewer.ImageViewerHandler:original" >+ name="%Editors.ImageViewerEditor.ZoomOriginal.label" >+ description="%Editors.ImageViewerEditor.ZoomOriginal.tooltip"/> >+ <command id="org.eclipse.ui.internal.imageviewer.Rotate" >+ defaultHandler="org.eclipse.ui.internal.imageviewer.ImageViewerHandler:rotate" >+ name="%Editors.ImageViewerEditor.Rotate.label" >+ description="%Editors.ImageViewerEditor.Rotate.tooltip"/> >+ </extension> >+ >+ <extension point="org.eclipse.ui.menus"> >+ <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions"> >+ <toolbar id="org.eclipse.ui.edit.text.actionSet.presentation"> >+ <!-- >+ <control id="org.eclipse.ui.internal.imageviewer.ZoomControl" >+ class="org.eclipse.ui.internal.imageviewer.ImageZoomControl"/> >+ --> >+ >+ <command >+ id="org.eclipse.ui.internal.imageviewer.ZoomInMenu" >+ commandId="org.eclipse.ui.internal.imageviewer.ZoomIn" >+ icon="$nl$/icons/full/etool16/zoom_in.gif" >+ label="%Editors.ImageViewerEditor.ZoomIn.label" >+ tooltip="%Editors.ImageViewerEditor.ZoomIn.tooltip"> >+ <visibleWhen> >+ <with variable="activeEditorId" > >+ <equals value="org.eclipse.ui.internal.ide.ImageViewerEditor"/> >+ </with> >+ </visibleWhen> >+ </command> >+ >+ <command >+ id="org.eclipse.ui.internal.imageviewer.ZoomOutMenu" >+ commandId="org.eclipse.ui.internal.imageviewer.ZoomOut" >+ icon="$nl$/icons/full/etool16/zoom_out.gif" >+ label="%Editors.ImageViewerEditor.ZoomOut.label" >+ tooltip="%Editors.ImageViewerEditor.ZoomOut.tooltip"> >+ <visibleWhen> >+ <with variable="activeEditorId"> >+ <equals value="org.eclipse.ui.internal.ide.ImageViewerEditor"/> >+ </with> >+ </visibleWhen> >+ </command> >+ >+ <command >+ id="org.eclipse.ui.internal.imageviewer.ZoomFitMenu" >+ commandId="org.eclipse.ui.internal.imageviewer.ZoomFit" >+ icon="$nl$/icons/full/etool16/zoom_fit.gif" >+ label="%Editors.ImageViewerEditor.ZoomFit.label" >+ tooltip="%Editors.ImageViewerEditor.ZoomFit.tooltip"> >+ <visibleWhen> >+ <with variable="activeEditorId"> >+ <equals value="org.eclipse.ui.internal.ide.ImageViewerEditor"/> >+ </with> >+ </visibleWhen> >+ </command> >+ >+ <command >+ id="org.eclipse.ui.internal.imageviewer.ZoomOriginalMenu" >+ commandId="org.eclipse.ui.internal.imageviewer.ZoomOriginal" >+ icon="$nl$/icons/full/etool16/zoom_original.gif" >+ label="%Editors.ImageViewerEditor.ZoomOriginal.label" >+ tooltip="%Editors.ImageViewerEditor.ZoomOriginal.tooltip"> >+ <visibleWhen> >+ <with variable="activeEditorId"> >+ <equals value="org.eclipse.ui.internal.ide.ImageViewerEditor"/> >+ </with> >+ </visibleWhen> >+ </command> >+ >+ <command >+ id="org.eclipse.ui.internal.imageviewer.RotateMenu" >+ commandId="org.eclipse.ui.internal.imageviewer.Rotate" >+ icon="$nl$/icons/full/etool16/image_rotate.gif" >+ label="%Editors.ImageViewerEditor.Rotate.label" >+ tooltip="%Editors.ImageViewerEditor.Rotate.tooltip"> >+ <visibleWhen> >+ <with variable="activeEditorId"> >+ <equals value="org.eclipse.ui.internal.ide.ImageViewerEditor"/> >+ </with> >+ </visibleWhen> >+ </command> >+ >+ </toolbar> >+ </menuContribution> >+ </extension> >+ > <extension > point="org.eclipse.ui.elementFactories"> > <factory >Index: src/org/eclipse/ui/internal/imageviewer/ImageCanvas.java >=================================================================== >RCS file: src/org/eclipse/ui/internal/imageviewer/ImageCanvas.java >diff -N src/org/eclipse/ui/internal/imageviewer/ImageCanvas.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ui/internal/imageviewer/ImageCanvas.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,372 @@ >+/******************************************************************************* >+ * Copyright (c) 2007 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Eugene Kuleshov - initial API and implementation (bug 155323) >+ *******************************************************************************/ >+ >+package org.eclipse.ui.internal.imageviewer; >+ >+import java.text.MessageFormat; >+ >+import org.eclipse.jface.action.IStatusLineManager; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.events.ControlAdapter; >+import org.eclipse.swt.events.ControlEvent; >+import org.eclipse.swt.events.MouseAdapter; >+import org.eclipse.swt.events.MouseEvent; >+import org.eclipse.swt.events.MouseMoveListener; >+import org.eclipse.swt.events.PaintEvent; >+import org.eclipse.swt.events.PaintListener; >+import org.eclipse.swt.events.SelectionAdapter; >+import org.eclipse.swt.events.SelectionEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.Cursor; >+import org.eclipse.swt.graphics.GC; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.swt.graphics.ImageData; >+import org.eclipse.swt.graphics.PaletteData; >+import org.eclipse.swt.graphics.Rectangle; >+import org.eclipse.swt.widgets.Canvas; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.ScrollBar; >+ >+/** >+ * Image viewer canvas >+ * >+ * @since 3.4 >+ */ >+public class ImageCanvas extends Canvas { >+ >+ private final IStatusLineManager statusLineManager; >+ private final String partName; >+ >+ private final Color backgroundColor; >+ >+ private boolean listenForMouseMovement = false; >+ private final Cursor cursorMove; >+ private final Cursor cursorArrow; >+ >+ private Image image; >+ >+ private int clientw; >+ private int clienth; >+ private int imagex; >+ private int imagey; >+ private int imagew; >+ private int imageh; >+ private int scrolly; >+ private int scrollx; >+ private int mousex; >+ private int mousey; >+ >+ private int zoom = 100; >+ >+ /** >+ * Creates new image canvas >+ * >+ * @param parent a composite control which will be the parent of the new instance (cannot be null) >+ * @param partName an editor part name for this canvas >+ * @param statusLineManager a window status manager >+ */ >+ public ImageCanvas(Composite parent, String partName, IStatusLineManager statusLineManager) { >+ super(parent, SWT.NO_BACKGROUND | SWT.V_SCROLL | SWT.H_SCROLL); >+ this.partName = partName; >+ this.statusLineManager = statusLineManager; >+ >+ this.backgroundColor = getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND); >+ this.cursorMove = new Cursor(getDisplay(), SWT.CURSOR_SIZEALL); >+ this.cursorArrow = new Cursor(getDisplay(), SWT.CURSOR_ARROW); >+ >+ this.addControlListener(new ControlAdapter() { >+ public void controlResized(ControlEvent e) { >+ updateCanvas(); >+ } >+ }); >+ >+ this.addMouseListener(new MouseAdapter() { >+ public void mouseDown(MouseEvent e) { >+ listenForMouseMovement = true; >+ mousex = e.x; >+ mousey = e.y; >+ setCursor(cursorMove); >+ } >+ >+ public void mouseUp(MouseEvent e) { >+ listenForMouseMovement = false; >+ setCursor(cursorArrow); >+ } >+ }); >+ >+ this.addMouseMoveListener(new MouseMoveListener() { >+ public void mouseMove(MouseEvent e) { >+ if (listenForMouseMovement) { >+ if (clientw < imagew) { >+ int diffx = mousex - e.x; >+ mousex = e.x; >+ imagex -= diffx; >+ getHorizontalBar().setSelection( >+ getHorizontalBar().getSelection() + diffx); >+ int minx = clientw - imagew; >+ int maxx = 0; >+ if (imagex < minx) { >+ imagex = minx; >+ } >+ if (imagex > maxx) { >+ imagex = maxx; >+ } >+ scrollx = getHorizontalBar().getSelection(); >+ } >+ if (clienth < imageh) { >+ int diffy = mousey - e.y; >+ mousey = e.y; >+ imagey -= diffy; >+ getVerticalBar().setSelection( >+ getVerticalBar().getSelection() + diffy); >+ int miny = clienth - imageh; >+ int maxy = 0; >+ if (imagey < miny) { >+ imagey = miny; >+ } >+ if (imagey > maxy) { >+ imagey = maxy; >+ } >+ scrolly = getVerticalBar().getSelection(); >+ } >+ >+ redraw(); >+ } >+ } >+ }); >+ >+ this.addPaintListener(new PaintListener() { >+ public void paintControl(PaintEvent event) { >+ Image backImage = new Image(getDisplay(), clientw, clienth); >+ >+ GC backGC = new GC(backImage); >+ >+ backGC.setBackground(backgroundColor); >+ backGC.setClipping(getClientArea()); >+ backGC.fillRectangle(getClientArea()); >+ >+ if (image != null) { >+ Rectangle bounds = image.getBounds(); >+ >+ if (bounds.width > imagew || bounds.height > imageh) { >+ // backGC.setAntialias(SWT.ON); >+ backGC.setInterpolation(SWT.HIGH); >+ } >+ // int zoom = ImageCanvas.this.zoom; >+ int imagew = ImageCanvas.this.imagew; >+ int imageh = ImageCanvas.this.imageh; >+ int imagex = ImageCanvas.this.imagex; >+ int imagey = ImageCanvas.this.imagey; >+ try { >+ backGC.drawImage(image, 0, 0, bounds.width, bounds.height, imagex, >+ imagey, imagew, imageh); >+ } catch (Exception ex) { >+ ex.printStackTrace(); >+ } >+ } >+ >+ event.gc.drawImage(backImage, 0, 0); >+ backGC.dispose(); >+ backImage.dispose(); >+ } >+ }); >+ >+ getHorizontalBar().setEnabled(true); >+ getHorizontalBar().addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent event) { >+ ScrollBar bar = (ScrollBar) event.widget; >+ imagex -= bar.getSelection() - scrollx; >+ scrollx = bar.getSelection(); >+ redraw(); >+ } >+ }); >+ >+ getVerticalBar().setEnabled(true); >+ getVerticalBar().addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent event) { >+ ScrollBar bar = (ScrollBar) event.widget; >+ imagey -= bar.getSelection() - scrolly; >+ scrolly = bar.getSelection(); >+ redraw(); >+ } >+ }); >+ } >+ >+ /** >+ * Set image and update canvas >+ * >+ * @param image an image to set >+ */ >+ public void setImage(Image image) { >+ if (this.image != null) { >+ image.dispose(); >+ } >+ >+ this.image = image; >+ updateCanvas(); >+ } >+ >+ /** >+ * Get image >+ * >+ * @return Returns the image. >+ */ >+ public Image getImage() { >+ return image; >+ } >+ >+ /** >+ * Get zoom percentage from the original image size >+ * >+ * @return Returns zoom value >+ */ >+ public int getZoom() { >+ int imageZoom = zoom; >+ if (zoom == -1) { >+ Rectangle bounds = image.getBounds(); >+ int zoomw = (int) (clientw * 100d / bounds.width); >+ int zoomh = (int) (clienth * 100d / bounds.height); >+ imageZoom = Math.min(zoomw, zoomh); >+ return imageZoom > 100 ? 100 : imageZoom; >+ } >+ return imageZoom; >+ } >+ >+ /** >+ * Set zoom value >+ * >+ * @param zoom >+ * percentage from the original image size >+ */ >+ public void setZoom(int zoom) { >+ this.zoom = zoom; >+ updateCanvas(); >+ } >+ >+ /** >+ * Rotate image >+ */ >+ public void rotate() { >+ ImageData originalData = image.getImageData(); >+ PaletteData originalPalette = originalData.palette; >+ ImageData tmpData; >+ PaletteData tmpPalette; >+ >+ if (originalPalette.isDirect) { >+ tmpPalette = new PaletteData(originalPalette.redMask, >+ originalPalette.greenMask, originalPalette.blueMask); >+ } else { >+ tmpPalette = new PaletteData(originalPalette.getRGBs()); >+ } >+ >+ tmpData = new ImageData(originalData.height, originalData.width, >+ originalData.depth, tmpPalette); >+ >+ tmpData.transparentPixel = originalData.transparentPixel; >+ >+ for (int i = 0; i < originalData.width; i++) { >+ for (int k = 0; k < originalData.height; k++) { >+ tmpData.setPixel(k, originalData.width - 1 - i, originalData.getPixel( >+ i, k)); >+ } >+ } >+ if (image != null && !image.isDisposed()) { >+ image.dispose(); >+ } >+ image = new Image(getDisplay(), tmpData); >+ >+ updateCanvas(); >+ } >+ >+ /** >+ * Update canvas after new images is set or canvas is resized >+ */ >+ public void updateCanvas() { >+ clientw = getClientArea().width; >+ clienth = getClientArea().height; >+ if (clientw < 1) { >+ clientw = 1; >+ } >+ if (clienth < 1) { >+ clienth = 1; >+ } >+ >+ if (image == null || image.isDisposed()) { >+ return; >+ } >+ >+ int imageZoom = getZoom(); >+ Rectangle bounds = image.getBounds(); >+ if (imageZoom == 100) { >+ imageh = bounds.height; >+ imagew = bounds.width; >+ } else { >+ imageh = (int) (bounds.height / 100d * imageZoom); >+ imagew = (int) (bounds.width / 100d * imageZoom); >+ } >+ >+ getVerticalBar().setVisible(clienth < imageh); >+ getVerticalBar().setSelection(0); >+ >+ getHorizontalBar().setVisible(clientw < imagew); >+ getHorizontalBar().setSelection(0); >+ >+ imagex = clientw / 2 - imagew / 2; >+ imagey = clienth / 2 - imageh / 2; >+ >+ if (imagex < 0) { >+ imagex = 0; >+ } >+ if (imagey < 0) { >+ imagey = 0; >+ } >+ >+ scrollx = getHorizontalBar().getSelection(); >+ scrolly = getVerticalBar().getSelection(); >+ >+ ScrollBar vertical = getVerticalBar(); >+ vertical.setMaximum(imageh); >+ vertical.setThumb(Math.min(clienth, imageh)); >+ vertical.setIncrement(40); >+ vertical.setPageIncrement(clienth); >+ >+ ScrollBar horizontal = getHorizontalBar(); >+ horizontal.setMaximum(imagew); >+ horizontal.setThumb(Math.min(clientw, imagew)); >+ horizontal.setIncrement(40); >+ horizontal.setPageIncrement(clientw); >+ >+ redraw(); >+ >+ ImageData data = image.getImageData(); >+ MessageFormat mf = new MessageFormat( >+ ImageViewerMessages.ImageViewerEditor_STATUS_LINE_FORMAT); >+ >+ statusLineManager.setMessage(mf.format(new Object[] { partName, >+ new Integer(data.width), new Integer(data.height), >+ new Integer(data.depth), new Integer(getZoom()) })); >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.swt.widgets.Widget#dispose() >+ */ >+ public void dispose() { >+ super.dispose(); >+ if (image != null && !image.isDisposed()) { >+ image.dispose(); >+ } >+ cursorMove.dispose(); >+ cursorArrow.dispose(); >+ } >+ >+} >Index: src/org/eclipse/ui/internal/imageviewer/ImageViewerEditor.java >=================================================================== >RCS file: src/org/eclipse/ui/internal/imageviewer/ImageViewerEditor.java >diff -N src/org/eclipse/ui/internal/imageviewer/ImageViewerEditor.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ui/internal/imageviewer/ImageViewerEditor.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,191 @@ >+/******************************************************************************* >+ * Copyright (c) 2007 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Eugene Kuleshov - initial API and implementation (bug 155323) >+ *******************************************************************************/ >+ >+package org.eclipse.ui.internal.imageviewer; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.Status; >+import org.eclipse.core.runtime.jobs.Job; >+import org.eclipse.jface.action.IStatusLineManager; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.events.DisposeEvent; >+import org.eclipse.swt.events.DisposeListener; >+import org.eclipse.swt.events.FocusAdapter; >+import org.eclipse.swt.events.FocusEvent; >+import org.eclipse.swt.events.FocusListener; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.swt.layout.FillLayout; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.ui.IEditorInput; >+import org.eclipse.ui.IEditorSite; >+import org.eclipse.ui.IStorageEditorInput; >+import org.eclipse.ui.part.EditorPart; >+ >+/** >+ * Image Viewer editor implementation >+ * >+ * @since 3.4 >+ */ >+public class ImageViewerEditor extends EditorPart { >+ >+ private ImageCanvas imageCanvas; >+ private Image image; >+ >+ /** >+ * Get image canvas >+ * >+ * @return image canvas used by this editor >+ */ >+ public ImageCanvas getImageCanvas() { >+ return imageCanvas; >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) >+ */ >+ public void createPartControl(final Composite parent) { >+ parent.addFocusListener(new FocusAdapter() { >+ public void focusGained(FocusEvent e) { >+ System.out.println("focusGained(FocusEvent e)"); //$NON-NLS-1$ >+ } >+ }); >+ >+ final IEditorInput editorInput = getEditorInput(); >+ setPartName(editorInput.getName()); >+ >+ ImageDescriptor editorInputIimageDescriptor = editorInput >+ .getImageDescriptor(); >+ if (editorInputIimageDescriptor != null) { >+ Image titleImage = editorInputIimageDescriptor.createImage(); >+ setTitleImage(titleImage); >+ } >+ >+ new Job(ImageViewerMessages.ImageViewerEditor_LOADING_IMAGE_JOB) { >+ protected IStatus run(IProgressMonitor monitor) { >+ if (editorInput instanceof IStorageEditorInput) { >+ IStorageEditorInput storageEditorInput = (IStorageEditorInput) editorInput; >+ try { >+ image = new Image(parent.getDisplay(), storageEditorInput >+ .getStorage().getContents()); >+ parent.getDisplay().asyncExec(new Runnable() { >+ public void run() { >+ imageCanvas.setImage(image); >+ } >+ }); >+ } catch (CoreException ex) { >+ // show the error >+ } >+ } >+ return Status.OK_STATUS; >+ } >+ }.schedule(); >+ >+ Composite composite = new Composite(parent, SWT.NONE); >+ composite.setLayout(new FillLayout()); >+ >+ composite.addFocusListener(new FocusListener() { >+ public void focusGained(FocusEvent e) { >+ imageCanvas.updateCanvas(); >+ } >+ >+ public void focusLost(FocusEvent e) { >+ IStatusLineManager statusLineManager = getEditorSite().getActionBars() >+ .getStatusLineManager(); >+ statusLineManager.setMessage(""); //$NON-NLS-1$ >+ } >+ }); >+ >+ this.imageCanvas = new ImageCanvas(composite, getPartName(), getEditorSite().getActionBars().getStatusLineManager()); >+ >+ parent.addDisposeListener(new DisposeListener() { >+ public void widgetDisposed(DisposeEvent e) { >+ if (imageCanvas != null && !imageCanvas.isDisposed()) { >+ imageCanvas.dispose(); >+ } >+ if (image != null && !image.isDisposed()) { >+ image.dispose(); >+ } >+ } >+ }); >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.ui.part.EditorPart#setPartName(java.lang.String) >+ */ >+ public void setPartName(String partName) { >+ super.setPartName(partName); >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, >+ * org.eclipse.ui.IEditorInput) >+ */ >+ public void init(IEditorSite site, IEditorInput input) { >+ setSite(site); >+ setInput(input); >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus() >+ */ >+ public void setFocus() { >+ if (imageCanvas != null) { >+ imageCanvas.setFocus(); >+ } >+ imageCanvas.update(); >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor) >+ */ >+ public void doSave(IProgressMonitor monitor) { >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.ui.part.EditorPart#doSaveAs() >+ */ >+ public void doSaveAs() { >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.ui.part.EditorPart#isDirty() >+ */ >+ public boolean isDirty() { >+ return false; >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed() >+ */ >+ public boolean isSaveAsAllowed() { >+ return false; >+ } >+ >+} >Index: src/org/eclipse/ui/internal/imageviewer/ImageViewerMessages.java >=================================================================== >RCS file: src/org/eclipse/ui/internal/imageviewer/ImageViewerMessages.java >diff -N src/org/eclipse/ui/internal/imageviewer/ImageViewerMessages.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ui/internal/imageviewer/ImageViewerMessages.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,39 @@ >+/******************************************************************************* >+ * Copyright (c) 2007 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Eugene Kuleshov - initial API and implementation (bug 155323) >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.imageviewer; >+ >+import org.eclipse.osgi.util.NLS; >+ >+/** >+ * Image viewer localization messages >+ * >+ * @since 3.4 >+ */ >+public class ImageViewerMessages extends NLS { >+ >+ private static final String BUNDLE_NAME = "org.eclipse.ui.internal.imageviewer.messages";//$NON-NLS-1$ >+ >+ /** >+ * Image loading job name >+ */ >+ public static String ImageViewerEditor_LOADING_IMAGE_JOB; >+ >+ /** >+ * Image editor status line format >+ */ >+ public static String ImageViewerEditor_STATUS_LINE_FORMAT; >+ >+ static { >+ NLS.initializeMessages(BUNDLE_NAME, ImageViewerMessages.class); >+ } >+ >+} >Index: src/org/eclipse/ui/internal/imageviewer/messages.properties >=================================================================== >RCS file: src/org/eclipse/ui/internal/imageviewer/messages.properties >diff -N src/org/eclipse/ui/internal/imageviewer/messages.properties >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ui/internal/imageviewer/messages.properties 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,13 @@ >+############################################################################### >+# Copyright (c) 2007 IBM Corporation and others. >+# All rights reserved. This program and the accompanying materials >+# are made available under the terms of the Eclipse Public License v1.0 >+# which accompanies this distribution, and is available at >+# http://www.eclipse.org/legal/epl-v10.html >+# >+# Contributors: >+# Eugene Kuleshov - initial API and implementation (bug 155323) >+############################################################################### >+ >+ImageViewerEditor_LOADING_IMAGE_JOB=Loading image >+ImageViewerEditor_STATUS_LINE_FORMAT={0} | size: {1} x {2} | depth: {3} | zoom: {4}% >Index: src/org/eclipse/ui/internal/imageviewer/ImageViewerHandler.java >=================================================================== >RCS file: src/org/eclipse/ui/internal/imageviewer/ImageViewerHandler.java >diff -N src/org/eclipse/ui/internal/imageviewer/ImageViewerHandler.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ui/internal/imageviewer/ImageViewerHandler.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,60 @@ >+/******************************************************************************* >+ * Copyright (c) 2007 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Eugene Kuleshov - initial API and implementation (bug 155323) >+ *******************************************************************************/ >+ >+package org.eclipse.ui.internal.imageviewer; >+ >+import org.eclipse.core.commands.AbstractHandler; >+import org.eclipse.core.commands.ExecutionEvent; >+import org.eclipse.core.runtime.IConfigurationElement; >+import org.eclipse.core.runtime.IExecutableExtension; >+import org.eclipse.ui.IEditorPart; >+import org.eclipse.ui.handlers.HandlerUtil; >+ >+/** >+ * Image viewer commands handler >+ * >+ * @since 3.4 >+ */ >+public class ImageViewerHandler extends AbstractHandler implements IExecutableExtension { >+ >+ private String action; >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) >+ */ >+ public Object execute(ExecutionEvent e) { >+ IEditorPart editor = HandlerUtil.getActiveEditor(e); >+ if(editor instanceof ImageViewerEditor) { >+ ImageViewerEditor imageViewer = ((ImageViewerEditor) editor); >+ ImageCanvas imageCanvas = imageViewer.getImageCanvas(); >+ if("zoomIn".equals(action)) { //$NON-NLS-1$ >+ imageCanvas.setZoom(imageCanvas.getZoom() * 2); >+ } else if("zoomOut".equals(action)) { //$NON-NLS-1$ >+ imageCanvas.setZoom(imageCanvas.getZoom() / 2); >+ } else if("zoomFit".equals(action)) { //$NON-NLS-1$ >+ imageCanvas.setZoom(-1); >+ } else if("original".equals(action)) { //$NON-NLS-1$ >+ imageCanvas.setZoom(100); >+ } else if("rotate".equals(action)) { //$NON-NLS-1$ >+ imageCanvas.rotate(); >+ } >+ } >+ return null; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object) >+ */ >+ public void setInitializationData(IConfigurationElement config, String propertyName, Object data) { >+ this.action = (String) data; >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 155323
:
79923
|
79924
|
80280
|
80599
|
80602
|
83548
|
83683