diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/ImageControl.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/ImageControl.java | 241 |
1 files changed, 0 insertions, 241 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/ImageControl.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/ImageControl.java deleted file mode 100644 index 4447eebd2..000000000 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/ImageControl.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Eclipse Public License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.eclipse.org/org/documents/epl-v10.php - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.ide.eclipse.adt.internal.editors.layout.gle2; - -import com.android.annotations.NonNull; -import com.android.annotations.Nullable; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.CLabel; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseTrackListener; -import org.eclipse.swt.events.PaintEvent; -import org.eclipse.swt.events.PaintListener; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Canvas; -import org.eclipse.swt.widgets.Composite; - -/** - * An ImageControl which simply renders an image, with optional margins and tooltips. This - * is useful since a {@link CLabel}, even without text, will hide the image when there is - * not enough room to fully fit it. - * <p> - * The image is always rendered left and top aligned. - */ -public class ImageControl extends Canvas implements MouseTrackListener { - private Image mImage; - private int mLeftMargin; - private int mTopMargin; - private int mRightMargin; - private int mBottomMargin; - private boolean mDisposeImage = true; - private boolean mMouseIn; - private Color mHoverColor; - private float mScale = 1.0f; - - /** - * Creates an ImageControl rendering the given image, which will be disposed when this - * control is disposed (unless the {@link #setDisposeImage} method is called to turn - * off auto dispose). - * - * @param parent the parent to add the image control to - * @param style the SWT style to use - * @param image the image to be rendered, which must not be null and should be unique - * for this image control since it will be disposed by this control when - * the control is disposed (unless the {@link #setDisposeImage} method is - * called to turn off auto dispose) - */ - public ImageControl(@NonNull Composite parent, int style, @Nullable Image image) { - super(parent, style | SWT.NO_FOCUS | SWT.DOUBLE_BUFFERED); - mImage = image; - - addPaintListener(new PaintListener() { - @Override - public void paintControl(PaintEvent event) { - onPaint(event); - } - }); - } - - @Nullable - public Image getImage() { - return mImage; - } - - public void setImage(@Nullable Image image) { - if (mDisposeImage && mImage != null) { - mImage.dispose(); - } - mImage = image; - redraw(); - } - - public void fitToWidth(int width) { - if (mImage == null) { - return; - } - Rectangle imageRect = mImage.getBounds(); - int imageWidth = imageRect.width; - if (imageWidth <= width) { - mScale = 1.0f; - return; - } - - mScale = width / (float) imageWidth; - redraw(); - } - - public void setScale(float scale) { - mScale = scale; - } - - public float getScale() { - return mScale; - } - - public void setHoverColor(@Nullable Color hoverColor) { - if (mHoverColor != null) { - removeMouseTrackListener(this); - } - mHoverColor = hoverColor; - if (hoverColor != null) { - addMouseTrackListener(this); - } - } - - @Nullable - public Color getHoverColor() { - return mHoverColor; - } - - @Override - public void dispose() { - super.dispose(); - - if (mDisposeImage && mImage != null && !mImage.isDisposed()) { - mImage.dispose(); - } - mImage = null; - } - - public void setDisposeImage(boolean disposeImage) { - mDisposeImage = disposeImage; - } - - public boolean getDisposeImage() { - return mDisposeImage; - } - - @Override - public Point computeSize(int wHint, int hHint, boolean changed) { - checkWidget(); - Point e = new Point(0, 0); - if (mImage != null) { - Rectangle r = mImage.getBounds(); - if (mScale != 1.0f) { - e.x += mScale * r.width; - e.y += mScale * r.height; - } else { - e.x += r.width; - e.y += r.height; - } - } - if (wHint == SWT.DEFAULT) { - e.x += mLeftMargin + mRightMargin; - } else { - e.x = wHint; - } - if (hHint == SWT.DEFAULT) { - e.y += mTopMargin + mBottomMargin; - } else { - e.y = hHint; - } - - return e; - } - - private void onPaint(PaintEvent event) { - Rectangle rect = getClientArea(); - if (mImage == null || rect.width == 0 || rect.height == 0) { - return; - } - - GC gc = event.gc; - Rectangle imageRect = mImage.getBounds(); - int imageHeight = imageRect.height; - int imageWidth = imageRect.width; - int destWidth = imageWidth; - int destHeight = imageHeight; - - int oldGcAlias = gc.getAntialias(); - int oldGcInterpolation = gc.getInterpolation(); - if (mScale != 1.0f) { - destWidth = (int) (mScale * destWidth); - destHeight = (int) (mScale * destHeight); - gc.setAntialias(SWT.ON); - gc.setInterpolation(SWT.HIGH); - } - - gc.drawImage(mImage, 0, 0, imageWidth, imageHeight, rect.x + mLeftMargin, rect.y - + mTopMargin, destWidth, destHeight); - - gc.setAntialias(oldGcAlias); - gc.setInterpolation(oldGcInterpolation); - - if (mHoverColor != null && mMouseIn) { - gc.setAlpha(60); - gc.setBackground(mHoverColor); - gc.setLineWidth(1); - gc.fillRectangle(0, 0, destWidth, destHeight); - } - } - - public void setMargins(int leftMargin, int topMargin, int rightMargin, int bottomMargin) { - checkWidget(); - mLeftMargin = Math.max(0, leftMargin); - mTopMargin = Math.max(0, topMargin); - mRightMargin = Math.max(0, rightMargin); - mBottomMargin = Math.max(0, bottomMargin); - redraw(); - } - - // ---- Implements MouseTrackListener ---- - - @Override - public void mouseEnter(MouseEvent e) { - mMouseIn = true; - if (mHoverColor != null) { - redraw(); - } - } - - @Override - public void mouseExit(MouseEvent e) { - mMouseIn = false; - if (mHoverColor != null) { - redraw(); - } - } - - @Override - public void mouseHover(MouseEvent e) { - } -} |