import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.program.Program;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.part.Page;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.tizen.common.util.Assert;
import org.tizen.common.util.EFSUtil;
import org.tizen.webuibuilder.gef.dnd.model.ResourceTemplate;
+import org.tizen.webuibuilder.ui.SelectionProvider;
import org.tizen.webuibuilder.ui.editor.PageDesigner;
import org.tizen.webuibuilder.ui.views.resources.model.Resource;
import org.tizen.webuibuilder.ui.views.resources.viewer.ResourcesEntryEditPart;
import org.tizen.webuibuilder.ui.views.resources.viewer.ResourcesViewer;
-import org.tizen.webuibuilder.utility.ImageUtils;
public class ResourcesPage extends Page implements PalettePage, ModifyListener,
- ISelectionChangedListener {
+ ISelectionChangedListener, ISelectionProvider {
private static int ITEM_WIDTH = 32;
private static int ITEM_HEIGHT = 32;
protected Text filterText = null;
protected Combo filterCombo = null;
- protected PaletteRoot root = null;
- protected IProject project = null;
protected IFolder currentFolder = null;
protected List<Resource> resources = null;
// PageDesigner
private PageDesigner pageDesigner = null;
- private IFile baseFile = null;
// Drag & Drop
private TemplateTransferDragSourceListener dragSourceListener = null;
private DropTarget dropTarget = null;
private ResourcesView view = null;
- protected ResourcesViewer viewer = null;
+ private ResourcesViewer viewer = null;
private List<String> selectionActions = new ArrayList<String>();
- protected List<Resource> displayResources = new LinkedList<Resource>();
+
+ private SelectionProvider selectionProvider = new SelectionProvider();
+ private static Logger logger = LoggerFactory.getLogger(ResourcesPage.class);
public ResourcesPage(ResourcesView view) {
super();
protected void setPageDesigner(PageDesigner pageDesigner) {
this.pageDesigner = pageDesigner;
- IEditorInput input = pageDesigner.getEditorInput();
- if (!(input instanceof IFileEditorInput)) {
- return;
- }
- IFileEditorInput fileInput = (IFileEditorInput) input;
- baseFile = fileInput.getFile();
+
}
protected PageDesigner getPageDesigner() {
}
protected IFile getBaseFile() {
- return baseFile;
+ IEditorInput input = pageDesigner.getEditorInput();
+ Assert.isTrue(input instanceof IFileEditorInput);
+ IFileEditorInput fileInput = (IFileEditorInput) input;
+ return fileInput.getFile();
}
/*
dropTargetListener = new ResourcesViewDropTargetAdapter(this);
pageDesignerDnDHooker = new PageDesignerDnDHooker(this);
- getSite().setSelectionProvider(viewer);
+ getSite().setSelectionProvider(this);
addListeners();
}
*/
@Override
public void dispose() {
- super.dispose();
removeListeners();
+ super.dispose();
}
protected ActionRegistry getActionRegistry() {
private void setInput(IFolder folder) {
Assert.notNull(folder);
- project = folder.getProject();
currentFolder = folder;
resources = getResources(currentFolder);
- root = getPaletteRoot(currentFolder, resources);
+ setInput(resources);
+ }
+
+ private void setInput(List<Resource> resources) {
+ PaletteRoot root = getPaletteRoot(currentFolder, resources);
viewer.setPaletteRoot(root);
- updateActions();
+ viewer.deselectAll();
+ refreshViewer();
}
/**
List<Resource> resources = new LinkedList<Resource>();
int folderCount = 0;
for (IResource member : members) {
- Resource resource = new Resource(baseFile, member);
+ Resource resource = new Resource(getBaseFile(), member);
if (member instanceof IFolder) {
resources.add(folderCount, resource);
folderCount++;
group.setDescription(groupName);
for (Resource resource : resources) {
String name = resource.getName();
- Image image = resource.getImage();
- image = ImageUtils.resize(image, ITEM_WIDTH, ITEM_HEIGHT);
- ImageDescriptor imageDescriptor = ImageDescriptor.createFromImage(image);
+ IResource iResource = resource.getResource();
+ ImageDescriptor imageDescriptor = getImageDescriptor(iResource);
+ ImageData imageData = imageDescriptor.getImageData();
+ ImageData resizedImageData = imageData.scaledTo(ITEM_WIDTH, ITEM_HEIGHT);
+ ImageDescriptor resizedImageDescriptor =
+ ImageDescriptor.createFromImageData(resizedImageData);
ResourceTemplate template = new ResourceTemplate(resource);
CombinedTemplateCreationEntry entry =
new CombinedTemplateCreationEntry(name, "", template, template.getFactory(),
- imageDescriptor, imageDescriptor);
+ resizedImageDescriptor,
+ resizedImageDescriptor);
group.add(entry);
}
root.add(group);
*/
@Override
public void selectionChanged(SelectionChangedEvent event) {
+ ISelection selection = event.getSelection();
+ Assert.isTrue(selection instanceof IStructuredSelection);
+ IStructuredSelection ss = (IStructuredSelection) selection;
+ Object object = ss.getFirstElement();
+ logger.info(object.getClass().toString());
+ if (object instanceof ResourcesEntryEditPart) {
+ setSelection(selection);
+ } else {
+ setSelection(StructuredSelection.EMPTY);
+ }
updateActions();
}
}
public void goInto() {
- ISelection selection = viewer.getSelection();
+ ISelection selection = getSelection();
if (!(selection instanceof IStructuredSelection)) {
return;
}
}
private void runFilters(String exp, String extension) {
- displayResources = getRegExpFilteredResources(resources, exp);
+ List<Resource> displayResources = getRegExpFilteredResources(resources, exp);
displayResources = getExtensionFilteredResources(displayResources, extension);
- root = getPaletteRoot(currentFolder, displayResources);
- viewer.setPaletteRoot(root);
+ setInput(displayResources);
+ }
+
+ protected void refreshViewer() {
+ // PaletteRoot
+ PaletteRoot root = viewer.getPaletteRoot();
+ List<?> groups = root.getChildren();
+ Assert.isTrue(groups.size() == 1);
+ Object group = groups.get(0);
+ // PaletteDrawer
+ Assert.isTrue(group instanceof PaletteDrawer);
+ PaletteDrawer paletteDrawer = (PaletteDrawer) group;
+ List<?> entries = paletteDrawer.getChildren();
+ for (Object entry : entries) {
+ Assert.isTrue(entry instanceof CombinedTemplateCreationEntry);
+ final CombinedTemplateCreationEntry templateEntry =
+ (CombinedTemplateCreationEntry) entry;
+ Object template = templateEntry.getTemplate();
+ Assert.isTrue(template instanceof ResourceTemplate);
+ ResourceTemplate resourceTemplate = (ResourceTemplate) template;
+ Resource resource = resourceTemplate.getResource();
+ if (resource.getType() != Resource.IMAGE) {
+ continue;
+ }
+ final IResource iResource = resource.getResource();
+ Display.getCurrent().asyncExec(new Runnable() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Runnable#run()
+ */
+ @Override
+ public void run() {
+ ImageLoader imageLoader = new ImageLoader();
+ ImageData[] imageData = imageLoader.load(iResource.getLocation().toString());
+ ImageData resizedImageData = imageData[0].scaledTo(ITEM_WIDTH, ITEM_HEIGHT);
+ ImageDescriptor imageDescriptor =
+ ImageDescriptor.createFromImageData(resizedImageData);
+ templateEntry.setSmallIcon(imageDescriptor);
+ templateEntry.setLargeIcon(imageDescriptor);
+ }
+ });
+ }
+ }
+
+ private ImageDescriptor getImageDescriptor(IResource resource) {
+ Assert.notNull(resource);
+ ImageDescriptor imageDescriptor = null;
+ if (resource instanceof IFolder) {
+ imageDescriptor =
+ PlatformUI.getWorkbench().getSharedImages()
+ .getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
+ } else if (resource instanceof IFile) {
+ IFile file = (IFile) resource;
+ imageDescriptor = getImageDescriptor(file);
+ } else {
+ }
+ return imageDescriptor;
+ }
+
+ private ImageDescriptor getImageDescriptor(IFile file) {
+ Assert.notNull(file);
+ ImageDescriptor imageDescriptor = null;
+ String extension = file.getFileExtension();
+ Program program = Program.findProgram(extension);
+ if (program != null) {
+ imageDescriptor = ImageDescriptor.createFromImageData(program.getImageData());
+ } else {
+ imageDescriptor =
+ PlatformUI.getWorkbench().getSharedImages()
+ .getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
+ }
+ return imageDescriptor;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jface.viewers.ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection
+ * )
+ */
+ @Override
+ public void setSelection(ISelection selection) {
+ selectionProvider.setSelection(selection);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ISelectionProvider#getSelection()
+ */
+ @Override
+ public ISelection getSelection() {
+ return selectionProvider.getSelection();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jface.viewers.ISelectionProvider#addSelectionChangedListener(org.eclipse.jface
+ * .viewers.ISelectionChangedListener)
+ */
+ @Override
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionProvider.addSelectionChangedListener(listener);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jface.viewers.ISelectionProvider#removeSelectionChangedListener(org.eclipse.jface
+ * .viewers.ISelectionChangedListener)
+ */
+ @Override
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionProvider.removeSelectionChangedListener(listener);
}
+
}
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.program.Program;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
import org.tizen.common.util.Assert;
private int type = INVALID;
private String name = null;
private String description = null;
- private Image image = null;
private String path = null;
private Resource() {
this.resource = resource;
this.name = resource.getName();
this.type = getType(resource);
- this.image = getImage(resource);
this.path = getPath(base, resource);
}
return resource;
}
- public Image getImage() {
- return image;
- }
-
public String getPath() {
return path;
}
if (extension == null) {
return false;
}
- if (extension.equalsIgnoreCase("png")
- // || file.getFileExtension().equalsIgnoreCase("jpg")
+ if (extension.equalsIgnoreCase("png") || file.getFileExtension().equalsIgnoreCase("jpg")
|| file.getFileExtension().equalsIgnoreCase("ico")
|| file.getFileExtension().equalsIgnoreCase("bmp")
|| file.getFileExtension().equalsIgnoreCase("gif")) {
return false;
}
- private Image getImage(IResource resource) {
- Assert.notNull(resource);
- Image image = null;
- if (resource instanceof IFolder) {
- image =
- PlatformUI.getWorkbench().getSharedImages()
- .getImage(ISharedImages.IMG_OBJ_FOLDER);
- } else if (resource instanceof IFile) {
- IFile file = (IFile) resource;
- image = getImage(file);
- } else {
- }
- return image;
- }
-
- private Image getImage(IFile file) {
- Assert.notNull(file);
- /*
- * create image we have to dispose this image
- */
- Image image = null;
- if (isImageFile(file)) {
- try {
- image = new Image(Display.getCurrent(), file.getContents());
- } catch (CoreException e) {
- e.printStackTrace();
- return null;
- }
- } else {
- String extension = file.getFileExtension();
- if (extension == null) {
- image =
- PlatformUI.getWorkbench().getSharedImages()
- .getImage(ISharedImages.IMG_OBJ_FILE);
- return image;
- }
-
- Program program = Program.findProgram(extension);
- if (program != null) {
- image = new Image(Display.getCurrent(), program.getImageData());
- } else {
- image =
- PlatformUI.getWorkbench().getSharedImages()
- .getImage(ISharedImages.IMG_OBJ_FILE);
- }
- }
- return image;
- }
}
\ No newline at end of file