/******************************************************************************* * Copyright (c) 2000, 2005 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.internal.forms.widgets; import java.util.Hashtable; import org.eclipse.swt.graphics.*; /** * @version 1.0 * @author */ public class ImageSegment extends ObjectSegment { public static final String SEL_IMAGE_PREFIX = "isel."; //$NON-NLS-1$ public Image getImage(Hashtable objectTable) { return getImage(getObjectId(), objectTable); } private Image getImage(String key, Hashtable objectTable) { if (key == null) return null; Object obj = objectTable.get(key); if (obj == null) return null; if (obj instanceof Image) return (Image) obj; return null; } // RAP [if] getSelectedImage unnecessary // private Image getSelectedImage(Hashtable objectTable, SelectionData selData) { // String key = SEL_IMAGE_PREFIX + getObjectId(); // Image image = getImage(key, objectTable); // if (image==null) { // image = FormUtil.createAlphaMashImage(selData.display, getImage(objectTable)); // if (image!=null) // objectTable.put(key, image); // } // return image; // } /* private String getSelectedImageId() { if (getObjectId() == null) return null; return SEL_IMAGE_PREFIX + getObjectId(); } */ // RAP [if] paint unnecessary // public void paint(GC gc, boolean hover, Hashtable resourceTable, boolean selected, SelectionData selData, Rectangle repaintRegion) { // Image image = getImage(resourceTable); // int iwidth = 0; // int iheight = 0; // if (image != null) { // Rectangle rect = image.getBounds(); // iwidth = rect.width + (isSelectable()?2:0); // iheight = rect.height + (isSelectable()?2:0); // } else // return; // Rectangle bounds = getBounds(); // int ix = bounds.x+(isSelectable()?1:0); // int iy = bounds.y+(isSelectable()?1:0); // // if (selData != null) { // int leftOffset = selData.getLeftOffset(bounds.height); // int rightOffset = selData.getRightOffset(bounds.height); // boolean firstRow = selData.isFirstSelectionRow(bounds.y, // bounds.height); // boolean lastRow = selData.isLastSelectionRow(bounds.y, // bounds.height); // boolean selectedRow = selData // .isSelectedRow(bounds.y, bounds.height); // if (selectedRow) { // if ((firstRow && leftOffset > ix) || // (lastRow && rightOffset < ix + iwidth/2)) { // drawClipImage(gc, image, ix, iy, repaintRegion); // } // else { // Color savedBg = gc.getBackground(); // gc.setBackground(selData.bg); // int sx = ix; // int sy = iy; // if (repaintRegion!=null) { // sx -= repaintRegion.x; // sy -= repaintRegion.y; // } // gc.fillRectangle(sx, sy, iwidth, iheight); // Image selImage = getSelectedImage(resourceTable, selData); // gc.drawImage(selImage, sx, sy); // gc.setBackground(savedBg); // } // } // else // drawClipImage(gc, image, ix, iy, repaintRegion); // } else // drawClipImage(gc, image, ix, iy, repaintRegion); // if (selected) { // int fx = bounds.x; // int fy = bounds.y; // if (repaintRegion!=null) { // fx -= repaintRegion.x; // fy -= repaintRegion.y; // } // Color fg = gc.getForeground(); // gc.setForeground(gc.getBackground()); // // Clean up to avoid canceling out XOR if it is already // // selected. // gc.drawRectangle(bounds.x, bounds.y, bounds.width - 1, // bounds.height - 1); // gc.setForeground(fg); // gc.drawFocus(fx, fy, bounds.width, bounds.height); // } // } // RAP [if] drawClipImage unnecessary // private void drawClipImage(GC gc, Image image, int ix, int iy, Rectangle repaintRegion) { // if (repaintRegion!=null) { // ix -= repaintRegion.x; // iy -= repaintRegion.y; // } // gc.drawImage(image, ix, iy); // } protected Point getObjectSize(Hashtable resourceTable, int wHint) { Image image = getImage(resourceTable); if (image==null) return new Point(0, 0); Rectangle ibounds = image.getBounds(); return new Point(ibounds.width, ibounds.height); } }