From 7789cdcf8d1fb2e9910df2e853ad86af7d5a7444 Mon Sep 17 00:00:00 2001 From: nik Date: Mon, 9 Feb 2015 11:01:54 +0300 Subject: [PATCH] Revert "Debugger: Image/Icon viewer based on standard image viewer" This reverts commit 0852a82d9f8563c9f74769d6838affdec83ba869. --- .../intellij/images/editor/ImageEditor.java | 5 + .../images/editor/ImageZoomModel.java | 34 ------ .../actionSystem/ImageEditorActionUtil.java | 31 +++-- .../editor/actions/ActualSizeAction.java | 11 +- .../editor/actions/ToggleGridAction.java | 11 +- .../images/editor/actions/ZoomInAction.java | 11 +- .../images/editor/actions/ZoomOutAction.java | 11 +- .../images/editor/impl/ImageEditorImpl.java | 63 +++++++++- .../images/editor/impl/ImageEditorUI.java | 112 +++--------------- .../thumbnail/impl/ThumbnailViewImpl.java | 18 +-- .../images/ui/ImageComponentDecorator.java | 7 -- .../settings/ImageObjectRenderer.java | 31 +++-- .../intellij/ui/ShowColorPickerAction.java | 12 -- 13 files changed, 138 insertions(+), 219 deletions(-) diff --git a/images/src/org/intellij/images/editor/ImageEditor.java b/images/src/org/intellij/images/editor/ImageEditor.java index 1aa422f3bba5..a888961b8af0 100644 --- a/images/src/org/intellij/images/editor/ImageEditor.java +++ b/images/src/org/intellij/images/editor/ImageEditor.java @@ -59,4 +59,9 @@ public interface ImageEditor extends Disposable, VirtualFileListener, ImageCompo */ boolean isDisposed(); + ImageZoomModel getZoomModel(); + + void setGridVisible(boolean visible); + + boolean isGridVisible(); } diff --git a/images/src/org/intellij/images/editor/ImageZoomModel.java b/images/src/org/intellij/images/editor/ImageZoomModel.java index 12216b5d0b04..a8902fd9aa21 100644 --- a/images/src/org/intellij/images/editor/ImageZoomModel.java +++ b/images/src/org/intellij/images/editor/ImageZoomModel.java @@ -38,38 +38,4 @@ public interface ImageZoomModel { boolean canZoomIn(); boolean isZoomLevelChanged(); - - ImageZoomModel STUB = new ImageZoomModel() { - @Override - public double getZoomFactor() { - return 1; - } - - @Override - public void setZoomFactor(double zoomFactor) { - } - - @Override - public void zoomOut() { - } - - @Override - public void zoomIn() { - } - - @Override - public boolean canZoomOut() { - return false; - } - - @Override - public boolean canZoomIn() { - return false; - } - - @Override - public boolean isZoomLevelChanged() { - return false; - } - }; } diff --git a/images/src/org/intellij/images/editor/actionSystem/ImageEditorActionUtil.java b/images/src/org/intellij/images/editor/actionSystem/ImageEditorActionUtil.java index 4379abfad418..1f6e6f8e2a40 100644 --- a/images/src/org/intellij/images/editor/actionSystem/ImageEditorActionUtil.java +++ b/images/src/org/intellij/images/editor/actionSystem/ImageEditorActionUtil.java @@ -17,9 +17,11 @@ package org.intellij.images.editor.actionSystem; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.actionSystem.Presentation; +import com.intellij.openapi.fileEditor.FileEditor; import org.intellij.images.editor.ImageEditor; -import org.intellij.images.ui.ImageComponentDecorator; +import org.intellij.images.editor.ImageFileEditor; /** * Editor actions utility. @@ -36,17 +38,22 @@ public final class ImageEditorActionUtil { * @param e Action event * @return Current {@link ImageEditor} or null */ - //public static ImageEditor getValidEditor(AnActionEvent e) { - // ImageEditor editor = getEditor(e); - // if (editor != null && editor.isValid()) { - // return editor; - // } - // return null; - //} + public static ImageEditor getValidEditor(AnActionEvent e) { + ImageEditor editor = getEditor(e); + if (editor != null && editor.isValid()) { + return editor; + } + return null; + } - public static ImageComponentDecorator getImageComponentDecorator(AnActionEvent e) { + public static ImageEditor getEditor(AnActionEvent e) { DataContext dataContext = e.getDataContext(); - return ImageComponentDecorator.DATA_KEY.getData(dataContext); + FileEditor editor = PlatformDataKeys.FILE_EDITOR.getData(dataContext); + if (editor instanceof ImageFileEditor) { + ImageFileEditor fileEditor = (ImageFileEditor) editor; + return fileEditor.getImageEditor(); + } + return null; } /** @@ -56,9 +63,9 @@ public final class ImageEditorActionUtil { * @return Enabled value */ public static boolean setEnabled(AnActionEvent e) { - ImageComponentDecorator decorator = getImageComponentDecorator(e); + ImageEditor editor = getValidEditor(e); Presentation presentation = e.getPresentation(); - presentation.setEnabled(decorator != null); + presentation.setEnabled(editor != null); return presentation.isEnabled(); } } diff --git a/images/src/org/intellij/images/editor/actions/ActualSizeAction.java b/images/src/org/intellij/images/editor/actions/ActualSizeAction.java index 9379e86e97b4..60ae407f8374 100644 --- a/images/src/org/intellij/images/editor/actions/ActualSizeAction.java +++ b/images/src/org/intellij/images/editor/actions/ActualSizeAction.java @@ -21,7 +21,6 @@ import com.intellij.openapi.project.DumbAware; import org.intellij.images.editor.ImageEditor; import org.intellij.images.editor.ImageZoomModel; import org.intellij.images.editor.actionSystem.ImageEditorActionUtil; -import org.intellij.images.ui.ImageComponentDecorator; /** * Resize image to actual size. @@ -32,9 +31,9 @@ import org.intellij.images.ui.ImageComponentDecorator; */ public final class ActualSizeAction extends AnAction implements DumbAware { public void actionPerformed(AnActionEvent e) { - ImageComponentDecorator decorator = ImageEditorActionUtil.getImageComponentDecorator(e); - if (decorator != null) { - ImageZoomModel zoomModel = decorator.getZoomModel(); + ImageEditor editor = ImageEditorActionUtil.getValidEditor(e); + if (editor != null) { + ImageZoomModel zoomModel = editor.getZoomModel(); zoomModel.setZoomFactor(1.0d); } } @@ -42,8 +41,8 @@ public final class ActualSizeAction extends AnAction implements DumbAware { public void update(AnActionEvent e) { super.update(e); if (ImageEditorActionUtil.setEnabled(e)) { - ImageComponentDecorator decorator = ImageEditorActionUtil.getImageComponentDecorator(e); - ImageZoomModel zoomModel = decorator.getZoomModel(); + ImageEditor editor = ImageEditorActionUtil.getValidEditor(e); + ImageZoomModel zoomModel = editor.getZoomModel(); e.getPresentation().setEnabled(zoomModel.getZoomFactor() != 1.0d); } } diff --git a/images/src/org/intellij/images/editor/actions/ToggleGridAction.java b/images/src/org/intellij/images/editor/actions/ToggleGridAction.java index 87d0d284c011..4cd74f8521c3 100644 --- a/images/src/org/intellij/images/editor/actions/ToggleGridAction.java +++ b/images/src/org/intellij/images/editor/actions/ToggleGridAction.java @@ -20,7 +20,6 @@ import com.intellij.openapi.actionSystem.ToggleAction; import com.intellij.openapi.project.DumbAware; import org.intellij.images.editor.ImageEditor; import org.intellij.images.editor.actionSystem.ImageEditorActionUtil; -import org.intellij.images.ui.ImageComponentDecorator; /** * Toggle grid lines over image. @@ -30,14 +29,14 @@ import org.intellij.images.ui.ImageComponentDecorator; */ public final class ToggleGridAction extends ToggleAction implements DumbAware { public boolean isSelected(AnActionEvent e) { - ImageComponentDecorator decorator = ImageEditorActionUtil.getImageComponentDecorator(e); - return decorator != null && decorator.isGridVisible(); + ImageEditor editor = ImageEditorActionUtil.getValidEditor(e); + return editor != null && editor.isGridVisible(); } public void setSelected(AnActionEvent e, boolean state) { - ImageComponentDecorator decorator = ImageEditorActionUtil.getImageComponentDecorator(e); - if (decorator != null) { - decorator.setGridVisible(state); + ImageEditor editor = ImageEditorActionUtil.getValidEditor(e); + if (editor != null) { + editor.setGridVisible(state); } } diff --git a/images/src/org/intellij/images/editor/actions/ZoomInAction.java b/images/src/org/intellij/images/editor/actions/ZoomInAction.java index b48702119da3..7461b39ec360 100644 --- a/images/src/org/intellij/images/editor/actions/ZoomInAction.java +++ b/images/src/org/intellij/images/editor/actions/ZoomInAction.java @@ -21,7 +21,6 @@ import com.intellij.openapi.project.DumbAware; import org.intellij.images.editor.ImageEditor; import org.intellij.images.editor.ImageZoomModel; import org.intellij.images.editor.actionSystem.ImageEditorActionUtil; -import org.intellij.images.ui.ImageComponentDecorator; /** * Zoom in. @@ -31,9 +30,9 @@ import org.intellij.images.ui.ImageComponentDecorator; */ public final class ZoomInAction extends AnAction implements DumbAware { public void actionPerformed(AnActionEvent e) { - ImageComponentDecorator decorator = ImageEditorActionUtil.getImageComponentDecorator(e); - if (decorator != null) { - ImageZoomModel zoomModel = decorator.getZoomModel(); + ImageEditor editor = ImageEditorActionUtil.getValidEditor(e); + if (editor != null) { + ImageZoomModel zoomModel = editor.getZoomModel(); zoomModel.zoomIn(); } } @@ -41,8 +40,8 @@ public final class ZoomInAction extends AnAction implements DumbAware { public void update(AnActionEvent e) { super.update(e); if (ImageEditorActionUtil.setEnabled(e)) { - ImageComponentDecorator decorator = ImageEditorActionUtil.getImageComponentDecorator(e); - ImageZoomModel zoomModel = decorator.getZoomModel(); + ImageEditor editor = ImageEditorActionUtil.getValidEditor(e); + ImageZoomModel zoomModel = editor.getZoomModel(); e.getPresentation().setEnabled(zoomModel.canZoomIn()); } } diff --git a/images/src/org/intellij/images/editor/actions/ZoomOutAction.java b/images/src/org/intellij/images/editor/actions/ZoomOutAction.java index 0873e397f584..3f7e709e7999 100644 --- a/images/src/org/intellij/images/editor/actions/ZoomOutAction.java +++ b/images/src/org/intellij/images/editor/actions/ZoomOutAction.java @@ -21,7 +21,6 @@ import com.intellij.openapi.project.DumbAware; import org.intellij.images.editor.ImageEditor; import org.intellij.images.editor.ImageZoomModel; import org.intellij.images.editor.actionSystem.ImageEditorActionUtil; -import org.intellij.images.ui.ImageComponentDecorator; /** * Zoom out. @@ -31,9 +30,9 @@ import org.intellij.images.ui.ImageComponentDecorator; */ public final class ZoomOutAction extends AnAction implements DumbAware { public void actionPerformed(AnActionEvent e) { - ImageComponentDecorator decorator = ImageEditorActionUtil.getImageComponentDecorator(e); - if (decorator != null) { - ImageZoomModel zoomModel = decorator.getZoomModel(); + ImageEditor editor = ImageEditorActionUtil.getValidEditor(e); + if (editor != null) { + ImageZoomModel zoomModel = editor.getZoomModel(); zoomModel.zoomOut(); } } @@ -41,8 +40,8 @@ public final class ZoomOutAction extends AnAction implements DumbAware { public void update(AnActionEvent e) { super.update(e); if (ImageEditorActionUtil.setEnabled(e)) { - ImageComponentDecorator decorator = ImageEditorActionUtil.getImageComponentDecorator(e); - ImageZoomModel zoomModel = decorator.getZoomModel(); + ImageEditor editor = ImageEditorActionUtil.getValidEditor(e); + ImageZoomModel zoomModel = editor.getZoomModel(); e.getPresentation().setEnabled(zoomModel.canZoomOut()); } } diff --git a/images/src/org/intellij/images/editor/impl/ImageEditorImpl.java b/images/src/org/intellij/images/editor/impl/ImageEditorImpl.java index 8c23b10b0c6e..581d7bb9b10e 100644 --- a/images/src/org/intellij/images/editor/impl/ImageEditorImpl.java +++ b/images/src/org/intellij/images/editor/impl/ImageEditorImpl.java @@ -22,11 +22,17 @@ import org.intellij.images.editor.ImageDocument; import org.intellij.images.editor.ImageEditor; import org.intellij.images.editor.ImageZoomModel; import org.intellij.images.fileTypes.ImageFileTypeManager; +import org.intellij.images.options.*; import org.intellij.images.thumbnail.actionSystem.ThumbnailViewActions; +import org.intellij.images.ui.ImageComponent; import org.intellij.images.vfs.IfsUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; /** * Image viewer implementation. @@ -34,6 +40,7 @@ import javax.swing.*; * @author Alexey Efimov */ final class ImageEditorImpl extends VirtualFileAdapter implements ImageEditor { + private final PropertyChangeListener optionsChangeListener = new OptionsChangeListener(); private final Project project; private final VirtualFile file; private final ImageEditorUI editorUI; @@ -43,7 +50,10 @@ final class ImageEditorImpl extends VirtualFileAdapter implements ImageEditor { this.project = project; this.file = file; - editorUI = new ImageEditorUI(this); + // Options + Options options = OptionsManager.getInstance().getOptions(); + editorUI = new ImageEditorUI(this, options.getEditorOptions()); + options.addPropertyChangeListener(optionsChangeListener); VirtualFileManager.getInstance().addVirtualFileListener(this); @@ -51,12 +61,34 @@ final class ImageEditorImpl extends VirtualFileAdapter implements ImageEditor { } private void setValue(VirtualFile file) { + ImageDocument document = editorUI.getImageComponent().getDocument(); try { - editorUI.setImage(IfsUtil.getImage(file), IfsUtil.getFormat(file)); - } - catch (Exception e) { - // Error loading image file - editorUI.setImage(null, null); + BufferedImage previousImage = document.getValue(); + BufferedImage image = IfsUtil.getImage(file); + document.setValue(image); + document.setFormat(IfsUtil.getFormat(file)); + ImageZoomModel zoomModel = getZoomModel(); + if (image != null && (previousImage == null || !zoomModel.isZoomLevelChanged())) { + // Set smart zooming behaviour on open + Options options = OptionsManager.getInstance().getOptions(); + ZoomOptions zoomOptions = options.getEditorOptions().getZoomOptions(); + // Open as actual size + zoomModel.setZoomFactor(1.0d); + + if (zoomOptions.isSmartZooming()) { + Dimension prefferedSize = zoomOptions.getPrefferedSize(); + if (prefferedSize.width > image.getWidth() && prefferedSize.height > image.getHeight()) { + // Resize to preffered size + // Calculate zoom factor + + double factor = (prefferedSize.getWidth() / (double) image.getWidth() + prefferedSize.getHeight() / (double) image.getHeight()) / 2.0d; + zoomModel.setZoomFactor(Math.ceil(factor)); + } + } + } + } catch (Exception e) { + // Error loading image file + document.setValue(null); } } @@ -119,6 +151,8 @@ final class ImageEditorImpl extends VirtualFileAdapter implements ImageEditor { } public void dispose() { + Options options = OptionsManager.getInstance().getOptions(); + options.removePropertyChangeListener(optionsChangeListener); editorUI.dispose(); VirtualFileManager.getInstance().removeVirtualFileListener(this); disposed = true; @@ -154,4 +188,21 @@ final class ImageEditorImpl extends VirtualFileAdapter implements ImageEditor { }); } } + + private class OptionsChangeListener implements PropertyChangeListener { + public void propertyChange(PropertyChangeEvent evt) { + Options options = (Options) evt.getSource(); + EditorOptions editorOptions = options.getEditorOptions(); + TransparencyChessboardOptions chessboardOptions = editorOptions.getTransparencyChessboardOptions(); + GridOptions gridOptions = editorOptions.getGridOptions(); + + ImageComponent imageComponent = editorUI.getImageComponent(); + imageComponent.setTransparencyChessboardCellSize(chessboardOptions.getCellSize()); + imageComponent.setTransparencyChessboardWhiteColor(chessboardOptions.getWhiteColor()); + imageComponent.setTransparencyChessboardBlankColor(chessboardOptions.getBlackColor()); + imageComponent.setGridLineZoomFactor(gridOptions.getLineZoomFactor()); + imageComponent.setGridLineSpan(gridOptions.getLineSpan()); + imageComponent.setGridLineColor(gridOptions.getLineColor()); + } + } } diff --git a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java index fedca0234308..b14296626eba 100644 --- a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java +++ b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java @@ -38,7 +38,6 @@ import org.intellij.images.editor.ImageEditor; import org.intellij.images.editor.ImageZoomModel; import org.intellij.images.editor.actionSystem.ImageEditorActions; import org.intellij.images.options.*; -import org.intellij.images.thumbnail.actionSystem.ThumbnailViewActions; import org.intellij.images.ui.ImageComponent; import org.intellij.images.ui.ImageComponentDecorator; import org.jetbrains.annotations.NonNls; @@ -58,8 +57,6 @@ import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import java.io.IOException; import java.util.Locale; @@ -68,13 +65,13 @@ import java.util.Locale; * * @author Alexey Efimov */ -final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, ImageComponentDecorator { +final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider { @NonNls private static final String IMAGE_PANEL = "image"; @NonNls private static final String ERROR_PANEL = "error"; - private final @Nullable ImageEditor editor; + private final ImageEditor editor; private final DeleteProvider deleteProvider; private final CopyPasteSupport copyPasteSupport; @@ -85,17 +82,10 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, private final JPanel contentPanel; private final JLabel infoLabel; - private final PropertyChangeListener optionsChangeListener = new OptionsChangeListener(); - - ImageEditorUI(@Nullable ImageEditor editor) { + ImageEditorUI(ImageEditor editor, EditorOptions editorOptions) { this.editor = editor; - - Options options = OptionsManager.getInstance().getOptions(); - EditorOptions editorOptions = options.getEditorOptions(); - options.addPropertyChangeListener(optionsChangeListener); - final PsiActionSupportFactory factory = PsiActionSupportFactory.getInstance(); - if (factory != null && editor != null) { + if (factory != null) { copyPasteSupport = factory.createPsiBasedCopyPasteSupport(editor.getProject(), this, new PsiActionSupportFactory.PsiElementSelector() { public PsiElement[] getSelectedElements() { @@ -178,11 +168,11 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, ColorModel colorModel = image.getColorModel(); String format = document.getFormat(); if (format == null) { - format = editor != null ? ImagesBundle.message("unknown.format") : ""; + format = ImagesBundle.message("unknown.format"); } else { format = format.toUpperCase(Locale.ENGLISH); } - VirtualFile file = editor != null ? editor.getFile() : null; + VirtualFile file = editor.getFile(); infoLabel.setText( ImagesBundle.message("image.info", image.getWidth(), image.getHeight(), format, @@ -202,73 +192,16 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, } void dispose() { - Options options = OptionsManager.getInstance().getOptions(); - options.removePropertyChangeListener(optionsChangeListener); - imageComponent.removeMouseWheelListener(wheelAdapter); imageComponent.getDocument().removeChangeListener(changeListener); removeAll(); } - @Override - public void setTransparencyChessboardVisible(boolean visible) { - imageComponent.setTransparencyChessboardVisible(visible); - } - @Override - public boolean isTransparencyChessboardVisible() { - return imageComponent.isTransparencyChessboardVisible(); - } - - @Override - public boolean isEnabledForActionPlace(String place) { - // Disable for thumbnails action - return !ThumbnailViewActions.ACTION_PLACE.equals(place); - } - - - @Override - public void setGridVisible(boolean visible) { - imageComponent.setGridVisible(visible); - } - - @Override - public boolean isGridVisible() { - return imageComponent.isGridVisible(); - } - - public ImageZoomModel getZoomModel() { + ImageZoomModel getZoomModel() { return zoomModel; } - public void setImage(BufferedImage image, String format) { - ImageDocument document = imageComponent.getDocument(); - BufferedImage previousImage = document.getValue(); - document.setValue(image); - if (image == null) return; - document.setFormat(format); - ImageZoomModel zoomModel = getZoomModel(); - if (previousImage == null || !zoomModel.isZoomLevelChanged()) { - // Set smart zooming behaviour on open - Options options = OptionsManager.getInstance().getOptions(); - ZoomOptions zoomOptions = options.getEditorOptions().getZoomOptions(); - // Open as actual size - zoomModel.setZoomFactor(1.0d); - - if (zoomOptions.isSmartZooming()) { - Dimension prefferedSize = zoomOptions.getPrefferedSize(); - if (prefferedSize.width > image.getWidth() && prefferedSize.height > image.getHeight()) { - // Resize to preffered size - // Calculate zoom factor - - double factor = - (prefferedSize.getWidth() / (double)image.getWidth() + prefferedSize.getHeight() / (double)image.getHeight()) / 2.0d; - zoomModel.setZoomFactor(Math.ceil(factor)); - } - } - } - } - private final class ImageContainerPane extends JBLayeredPane { private final ImageComponent imageComponent; @@ -280,7 +213,7 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, @Override public Point magnify(double scale, Point at) { Point locationBefore = imageComponent.getLocation(); - ImageZoomModel model = editor != null ? editor.getZoomModel() : getZoomModel(); + ImageZoomModel model = editor.getZoomModel(); double factor = model.getZoomFactor(); model.setZoomFactor(scale * factor); return new Point(((int)((at.x - Math.max(scale > 1.0 ? locationBefore.x : 0, 0)) * scale)), @@ -450,18 +383,18 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, public Object getData(String dataId) { if (CommonDataKeys.PROJECT.is(dataId)) { - return editor != null ? editor.getProject() : null; + return editor.getProject(); } else if (CommonDataKeys.VIRTUAL_FILE.is(dataId)) { - return editor != null ? editor.getFile() : null; + return editor.getFile(); } else if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { - return editor != null ? new VirtualFile[]{editor.getFile()} : new VirtualFile[]{}; + return new VirtualFile[]{editor.getFile()}; } else if (CommonDataKeys.PSI_FILE.is(dataId)) { return getData(CommonDataKeys.PSI_ELEMENT.getName()); } else if (CommonDataKeys.PSI_ELEMENT.is(dataId)) { - VirtualFile file = editor != null ? editor.getFile() : null; + VirtualFile file = editor.getFile(); return file != null && file.isValid() ? PsiManager.getInstance(editor.getProject()).findFile(file) : null; } else if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { - return editor != null ? new PsiElement[]{(PsiElement)getData(CommonDataKeys.PSI_ELEMENT.getName())} : new PsiElement[]{} ; + return new PsiElement[]{(PsiElement)getData(CommonDataKeys.PSI_ELEMENT.getName())}; } else if (PlatformDataKeys.COPY_PROVIDER.is(dataId) && copyPasteSupport != null) { return this; } else if (PlatformDataKeys.CUT_PROVIDER.is(dataId) && copyPasteSupport != null) { @@ -469,7 +402,7 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, } else if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { return deleteProvider; } else if (ImageComponentDecorator.DATA_KEY.is(dataId)) { - return editor != null ? editor : this; + return editor; } return null; @@ -517,21 +450,4 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, return myImage; } } - - private class OptionsChangeListener implements PropertyChangeListener { - public void propertyChange(PropertyChangeEvent evt) { - Options options = (Options) evt.getSource(); - EditorOptions editorOptions = options.getEditorOptions(); - TransparencyChessboardOptions chessboardOptions = editorOptions.getTransparencyChessboardOptions(); - GridOptions gridOptions = editorOptions.getGridOptions(); - - imageComponent.setTransparencyChessboardCellSize(chessboardOptions.getCellSize()); - imageComponent.setTransparencyChessboardWhiteColor(chessboardOptions.getWhiteColor()); - imageComponent.setTransparencyChessboardBlankColor(chessboardOptions.getBlackColor()); - imageComponent.setGridLineZoomFactor(gridOptions.getLineZoomFactor()); - imageComponent.setGridLineSpan(gridOptions.getLineSpan()); - imageComponent.setGridLineColor(gridOptions.getLineColor()); - } - } - } diff --git a/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewImpl.java b/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewImpl.java index 2b04c8822c98..445c245b12d9 100644 --- a/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewImpl.java +++ b/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewImpl.java @@ -19,13 +19,11 @@ package org.intellij.images.thumbnail.impl; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.ToolWindow; import com.intellij.openapi.wm.ToolWindowAnchor; import com.intellij.openapi.wm.ToolWindowManager; import icons.ImagesIcons; -import org.intellij.images.editor.ImageZoomModel; import org.intellij.images.editor.actionSystem.ImageEditorActions; import org.intellij.images.thumbnail.ThumbnailView; import org.intellij.images.vfs.IfsUtil; @@ -162,26 +160,12 @@ final class ThumbnailViewImpl implements ThumbnailView { public void dispose() { // Dispose UI - Disposer.dispose(getUI()); + getUI().dispose(); // Unregister ToolWindow ToolWindowManager windowManager = ToolWindowManager.getInstance(project); windowManager.unregisterToolWindow(TOOLWINDOW_ID); } - @Override - public ImageZoomModel getZoomModel() { - return ImageZoomModel.STUB; - } - - @Override - public void setGridVisible(boolean visible) { - } - - @Override - public boolean isGridVisible() { - return false; - } - private final class LazyScroller implements Runnable { public void run() { SwingUtilities.invokeLater(new Runnable() { diff --git a/images/src/org/intellij/images/ui/ImageComponentDecorator.java b/images/src/org/intellij/images/ui/ImageComponentDecorator.java index 075065cbbca9..da9ef9215b3a 100644 --- a/images/src/org/intellij/images/ui/ImageComponentDecorator.java +++ b/images/src/org/intellij/images/ui/ImageComponentDecorator.java @@ -16,7 +16,6 @@ package org.intellij.images.ui; import com.intellij.openapi.actionSystem.DataKey; -import org.intellij.images.editor.ImageZoomModel; /** * Image Component manager. It can toggle backround transparency, grid, etc. @@ -37,10 +36,4 @@ public interface ImageComponentDecorator { * @return true is decorator is enabled */ boolean isEnabledForActionPlace(String place); - - ImageZoomModel getZoomModel(); - - void setGridVisible(boolean visible); - - boolean isGridVisible(); } diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/ImageObjectRenderer.java b/java/debugger/impl/src/com/intellij/debugger/settings/ImageObjectRenderer.java index 6372092dc2e9..96f7fbe086a2 100644 --- a/java/debugger/impl/src/com/intellij/debugger/settings/ImageObjectRenderer.java +++ b/java/debugger/impl/src/com/intellij/debugger/settings/ImageObjectRenderer.java @@ -25,9 +25,13 @@ import com.intellij.debugger.ui.tree.ValueDescriptor; import com.intellij.debugger.ui.tree.render.CompoundReferenceRenderer; import com.intellij.debugger.ui.tree.render.DescriptorLabelListener; import com.intellij.rt.debugger.ImageSerializer; +import com.intellij.ui.Gray; +import com.intellij.ui.JBColor; +import com.intellij.ui.components.JBLabel; +import com.intellij.ui.components.JBScrollPane; +import com.intellij.util.ui.UIUtil; import com.intellij.xdebugger.frame.XFullValueEvaluator; import com.sun.jdi.*; -import org.intellij.images.editor.impl.ImageEditorManagerImpl; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -67,15 +71,24 @@ class ImageObjectRenderer extends CompoundReferenceRenderer implements FullValue } static JComponent createIconViewer(Icon icon) { - final int w = icon.getIconWidth(); - final int h = icon.getIconHeight(); - final BufferedImage image = GraphicsEnvironment.getLocalGraphicsEnvironment() - .getDefaultScreenDevice().getDefaultConfiguration().createCompatibleImage(w, h, Transparency.TRANSLUCENT); - final Graphics2D g = image.createGraphics(); - icon.paintIcon(null, g, 0, 0); - g.dispose(); + return new JBScrollPane(new JBLabel(icon){ + private BufferedImage myBackgroundImage = UIUtil.createImage(16, 16, BufferedImage.TYPE_INT_ARGB); + { + Graphics2D g = myBackgroundImage.createGraphics(); + g.setColor(new JBColor(Gray._255, Gray._135)); + g.fillRect(0, 0, 17, 17); + g.setColor(new JBColor(Gray._191, Gray._83)); + g.fillRect(0, 0, 8, 8); + g.fillRect(8, 8, 8, 8); + } + @Override + public void paint(Graphics g) { + ((Graphics2D)g).setPaint(new TexturePaint(myBackgroundImage, new Rectangle(0, 0, 16, 16))); + g.fillRect(0, 0, getWidth()+1, getHeight() + 1); + super.paint(g); + } + }); - return ImageEditorManagerImpl.createImageEditorUI(image); } @Nullable diff --git a/platform/platform-impl/src/com/intellij/ui/ShowColorPickerAction.java b/platform/platform-impl/src/com/intellij/ui/ShowColorPickerAction.java index 74af71c52d54..5327c84c3c8d 100644 --- a/platform/platform-impl/src/com/intellij/ui/ShowColorPickerAction.java +++ b/platform/platform-impl/src/com/intellij/ui/ShowColorPickerAction.java @@ -18,13 +18,11 @@ package com.intellij.ui; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; import com.intellij.openapi.wm.IdeFrame; import com.intellij.openapi.wm.WindowManager; import javax.swing.*; -import java.awt.*; import java.util.List; /** @@ -43,16 +41,6 @@ public class ShowColorPickerAction extends AnAction { } } - @Override - public void update(AnActionEvent e) { - Component component = PlatformDataKeys.CONTEXT_COMPONENT.getData(e.getDataContext()); - if (component == null || !(SwingUtilities.getWindowAncestor(component) instanceof Frame)) { - e.getPresentation().setEnabledAndVisible(false); - return; - } - e.getPresentation().setEnabledAndVisible(true); - } - private static JComponent rootComponent(Project project) { if (project != null) { IdeFrame frame = WindowManager.getInstance().getIdeFrame(project);