package org.eclipse.nebula.widgets.gallery; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.internal.graphics.ResourceFactory; import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Widget; public class GalleryItem extends Item { public static final String REAL_ITEM = "realItem"; private CLabel realItem; private Gallery parent; private List childs = new ArrayList(); public GalleryItem(Gallery parent, int style) { super(parent, style); this.parent = parent; realItem = new CLabel(parent.contentArea, style | SWT.BORDER); realItem.addMouseListener(new MouseListener() { public void mouseUp(MouseEvent e) { Gallery gallery = (Gallery) getParent(); gallery.notifyListeners(GalleryItem.this); } public void mouseDown(MouseEvent e) { } public void mouseDoubleClick(MouseEvent e) { } }); this.parent.addChild(this); parent.contentArea.layout(); } public GalleryItem(GalleryItem group, int style) { this(group.getParent(), style); group.childs.add(this); } public void dispose() { super.dispose(); realItem.dispose(); if(childs.size() > 0) { for (int i = 0; i < childs.size(); i++) { GalleryItem item = (GalleryItem) childs.get(i); item.dispose(); } } } public void setExpanded(boolean b) { } public void setImage(Image image) { ImageData imageData = ResourceFactory.getImageData(image); ImageData imageData2 = imageData.scaledTo(32, 32); Image newImage = ResourceFactory.findImage(imageData2); imageData = null; realItem.setImage(newImage); } public void setText(String text) { realItem.setText(text); if(text.equals(parent.lastSelection)) { setSelected(true); } } public String getText() { return realItem.getText(); } public GalleryItem getItem(int index) { return parent.getItem(index); } public int getItemCount() { return getParent().getChildren().length; } public Gallery getParent() { return parent; } public Widget getParentItem() { return getParent(); } public void setBackground(Color newColor) { realItem.setBackground(newColor); } public Color getBackground() { return null; } public void setForeground(Color newColor) { } public Color getForeground() { return null; } public void setSelected(boolean selected) { if(selected) { setBackground(getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION)); } else { setBackground(null); } } }