Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Schindl2014-11-27 08:53:58 +0000
committerTom Schindl2014-11-27 08:53:58 +0000
commit40fdd636e4466129907cb6fc3709f5d296159d55 (patch)
treeb47f112cfdb9eb9e0262f50b548d641d235cf47b /experimental
parent5434fe4a6b210d51747a2aed742c3bf769007d65 (diff)
downloadorg.eclipse.efxclipse-40fdd636e4466129907cb6fc3709f5d296159d55.tar.gz
org.eclipse.efxclipse-40fdd636e4466129907cb6fc3709f5d296159d55.tar.xz
org.eclipse.efxclipse-40fdd636e4466129907cb6fc3709f5d296159d55.zip
use different icons
Diffstat (limited to 'experimental')
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/META-INF/MANIFEST.MF3
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/fragment.e4xmi4
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/application-x-zerosize.pngbin0 -> 530 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/inode-directory.pngbin0 -> 386 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/view-list-tree.pngbin0 -> 549 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/view-process-tree.pngbin0 -> 414 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/22/code-class.pngbin888 -> 0 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/22/view-list-tree.pngbin405 -> 0 bytes
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileList.java143
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileOutline.java20
10 files changed, 137 insertions, 33 deletions
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/META-INF/MANIFEST.MF b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/META-INF/MANIFEST.MF
index 1a336e8c5..150ac916b 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/META-INF/MANIFEST.MF
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/META-INF/MANIFEST.MF
@@ -47,4 +47,5 @@ Import-Package: javafx.animation;version="2.2.0",
javafx.util;version="2.2.0",
javafx.util.converter;version="2.2.0",
javax.annotation;version="1.2.0",
- javax.inject;version="1.0.0"
+ javax.inject;version="1.0.0",
+ org.eclipse.fx.ui.controls
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/fragment.e4xmi b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/fragment.e4xmi
index 2dcdca609..9132404f4 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/fragment.e4xmi
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/fragment.e4xmi
@@ -4,11 +4,11 @@
<elements xsi:type="advanced:Perspective" xmi:id="_Zg4MUPNlEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.freeedit.perspective.0" label="Free edit">
<children xsi:type="basic:PartSashContainer" xmi:id="_ejlRMPNlEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.freeedit.partsashcontainer.0" horizontal="true">
<children xsi:type="basic:PartStack" xmi:id="_fgaF0PNlEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.freeedit.partstack.0" containerData="20">
- <children xsi:type="basic:Part" xmi:id="_iX7skPNlEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.freeedit.part.0" contributionURI="bundleclass://org.eclipse.fx.code.compensator.freeedit/org.eclipse.fx.code.compensator.freeedit.FileList" label="Files" iconURI="platform:/plugin/org.eclipse.fx.code.compensator.freeedit/icons/22/view-list-tree.png"/>
+ <children xsi:type="basic:Part" xmi:id="_iX7skPNlEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.freeedit.part.0" contributionURI="bundleclass://org.eclipse.fx.code.compensator.freeedit/org.eclipse.fx.code.compensator.freeedit.FileList" label="Files" iconURI="platform:/plugin/org.eclipse.fx.code.compensator.freeedit/icons/16/view-list-tree.png"/>
</children>
<children xsi:type="basic:PartStack" xmi:id="_f6c9gPNlEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.freeedit.partstack.1" containerData="60"/>
<children xsi:type="basic:PartStack" xmi:id="_gQ-nIPNlEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.freeedit.partstack.2" containerData="20">
- <children xsi:type="basic:Part" xmi:id="_tzdUsPNlEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.freeedit.part.1" contributionURI="bundleclass://org.eclipse.fx.code.compensator.freeedit/org.eclipse.fx.code.compensator.freeedit.FileOutline" label="Outline" iconURI="platform:/plugin/org.eclipse.fx.code.compensator.freeedit/icons/22/code-class.png"/>
+ <children xsi:type="basic:Part" xmi:id="_tzdUsPNlEeOKm6R57HGa4g" elementId="org.eclipse.fx.code.compensator.freeedit.part.1" contributionURI="bundleclass://org.eclipse.fx.code.compensator.freeedit/org.eclipse.fx.code.compensator.freeedit.FileOutline" label="Outline" iconURI="platform:/plugin/org.eclipse.fx.code.compensator.freeedit/icons/16/view-process-tree.png"/>
</children>
</children>
<variables>activeInput</variables>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/application-x-zerosize.png b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/application-x-zerosize.png
new file mode 100644
index 000000000..1be2379f3
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/application-x-zerosize.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/inode-directory.png b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/inode-directory.png
new file mode 100644
index 000000000..536da3d1c
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/inode-directory.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/view-list-tree.png b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/view-list-tree.png
new file mode 100644
index 000000000..488fde6dd
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/view-list-tree.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/view-process-tree.png b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/view-process-tree.png
new file mode 100644
index 000000000..af42132cf
--- /dev/null
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/16/view-process-tree.png
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/22/code-class.png b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/22/code-class.png
deleted file mode 100644
index 225aca941..000000000
--- a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/22/code-class.png
+++ /dev/null
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/22/view-list-tree.png b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/22/view-list-tree.png
deleted file mode 100644
index b1dde396c..000000000
--- a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/icons/22/view-list-tree.png
+++ /dev/null
Binary files differ
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileList.java b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileList.java
index 005ec2c5b..8e815413e 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileList.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileList.java
@@ -10,12 +10,22 @@
*******************************************************************************/
package org.eclipse.fx.code.compensator.freeedit;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
-import javafx.scene.control.ListCell;
-import javafx.scene.control.ListView;
+import javafx.scene.control.TreeCell;
+import javafx.scene.control.TreeItem;
+import javafx.scene.control.TreeView;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
@@ -31,34 +41,59 @@ import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.fx.code.compensator.editor.services.FileIconLookup;
import org.eclipse.fx.code.compensator.model.workbench.File;
+import org.eclipse.fx.code.compensator.model.workbench.Folder;
import org.eclipse.fx.code.compensator.model.workbench.Resource;
import org.eclipse.fx.code.compensator.model.workbench.Workbench;
+import org.eclipse.fx.code.compensator.model.workbench.WorkbenchFactory;
import org.eclipse.fx.code.compensator.model.workbench.WorkbenchPackage;
+
@SuppressWarnings("restriction")
public class FileList {
@Inject
private Workbench workbench;
-
+
@Inject
private ECommandService commandService;
-
+
@Inject
private EHandlerService handlerService;
-
- private ObservableList<Resource> inputList = FXCollections.observableArrayList();
- private ListView<Resource> view;
-
+ @Inject
+ private FileIconLookup lookup;
+
+ private ObservableList<TreeItem<Resource>> inputList = FXCollections.observableArrayList();
+
+ private TreeView<Resource> view;
+
+ private Image fileIcon;
+ private Image folderIcon;
+
+
@PostConstruct
public void initUI(BorderPane parent) {
- view = new ListView<>();
- view.setCellFactory(FileList::listCell);
+ fileIcon = new Image(getClass().getClassLoader().getResource("/icons/16/application-x-zerosize.png").toExternalForm());
+ folderIcon = new Image(getClass().getClassLoader().getResource("/icons/16/inode-directory.png").toExternalForm());
+
+ view = new TreeView<>();
+ view.setCellFactory(this::treeCell);
+ view.setShowRoot(false);
+
+ TreeItem<Resource> t = new TreeItem<>();
for( Resource r : workbench.getResources() ) {
- inputList.add(r);
+ if( r instanceof Folder ) {
+ FolderTreeItem ti = new FolderTreeItem((Folder)r);
+ t.getChildren().add(ti);
+ inputList.add(ti);
+ } else {
+ TreeItem<Resource> ti = new TreeItem<>(r);
+ t.getChildren().add(ti);
+ inputList.add(ti);
+ }
}
- view.setItems(inputList);
+ view.setRoot(t);
view.setOnMouseClicked(this::open);
parent.setCenter(view);
workbench.eAdapters().add(new AdapterImpl() {
@@ -66,32 +101,53 @@ public class FileList {
public void notifyChanged(Notification msg) {
if( msg.getFeature() == WorkbenchPackage.Literals.WORKBENCH_ELEMENT__RESOURCES ) {
if( msg.getEventType() == Notification.ADD ) {
- inputList.add((Resource) msg.getNewValue());
+ if( msg.getNewValue() instanceof File ) {
+ TreeItem<Resource> e = new TreeItem<>((Resource) msg.getNewValue());
+ t.getChildren().add(e);
+ inputList.add(e);
+ } else {
+ FolderTreeItem e = new FolderTreeItem((Folder) msg.getNewValue());
+ t.getChildren().add(e);
+ inputList.add(e);
+ }
}
}
}
});
}
-
+
private void open(MouseEvent event) {
if( event.getClickCount() == 2 ) {
Command cmd = commandService.getCommand("org.eclipse.fx.code.compensator.app.command.1");
IEclipseContext staticCtx = EclipseContextFactory.create();
- staticCtx.set(File.class, (File)view.getSelectionModel().getSelectedItem());
- ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(cmd, Collections.emptyMap());
- handlerService.executeHandler(pCmd, staticCtx);
- staticCtx.dispose();
+ if( view.getSelectionModel().getSelectedItem() != null && view.getSelectionModel().getSelectedItem().getValue() instanceof File ) {
+ staticCtx.set(File.class, (File)view.getSelectionModel().getSelectedItem().getValue());
+ ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(cmd, Collections.emptyMap());
+ handlerService.executeHandler(pCmd, staticCtx);
+ staticCtx.dispose();
+ }
}
}
-
- private static ListCell<Resource> listCell(ListView<Resource> param) {
- return new ListCell<Resource>() {
+
+ private TreeCell<Resource> treeCell(TreeView<Resource> param) {
+ return new TreeCell<Resource>() {
@Override
protected void updateItem(Resource item, boolean empty) {
if( item != null && ! empty ) {
if( item instanceof File ) {
URI uri = URI.createURI(((File) item).getUrl());
setText(uri.lastSegment());
+ String iconUri = lookup.getFileIcon(uri.toString());
+ if( iconUri == null ) {
+ setGraphic(new ImageView(fileIcon));
+ } else {
+ //TODO We need to cache images by URI
+ setGraphic(new ImageView(new Image(iconUri)));
+ }
+ } else if( item instanceof Folder ) {
+ URI uri = URI.createURI(((Folder) item).getUrl());
+ setText(uri.segment(uri.segmentCount()-2));
+ setGraphic(new ImageView(folderIcon));
}
} else {
setText(null);
@@ -101,4 +157,49 @@ public class FileList {
}
};
}
+
+ static class FolderTreeItem extends TreeItem<Resource> {
+ private boolean hasLoaded;
+
+ public FolderTreeItem(Folder f) {
+ super(f);
+ getChildren().add(new TreeItem<>());
+
+ expandedProperty().addListener((o) -> {
+ if( isExpanded() ) {
+ if( ! this.hasLoaded ) {
+ loadChildren();
+ }
+ }
+ });
+ }
+
+ private void loadChildren() {
+ try {
+ java.net.URI uri = new java.net.URI(((Folder)getValue()).getUrl());
+ Path path = Paths.get(uri);
+ List<TreeItem<Resource>> l = new ArrayList<>();
+ Files.newDirectoryStream(path).forEach((p) -> {
+ if( Files.isDirectory(p) ) {
+ Folder f = WorkbenchFactory.eINSTANCE.createFolder();
+ f.setUrl(p.toUri().toString());
+ l.add(new FolderTreeItem(f));
+ } else {
+ File f = WorkbenchFactory.eINSTANCE.createFile();
+ f.setUrl(p.toUri().toString());
+ l.add(new TreeItem<>(f));
+ }
+ });
+ getChildren().setAll(l);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (URISyntaxException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+
+ }
+ }
} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileOutline.java b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileOutline.java
index 64db57827..3f7ee8b47 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileOutline.java
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.freeedit/src/org/eclipse/fx/code/compensator/freeedit/FileOutline.java
@@ -10,10 +10,12 @@
*******************************************************************************/
package org.eclipse.fx.code.compensator.freeedit;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import javafx.event.ActionEvent;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
@@ -26,6 +28,7 @@ import javax.inject.Named;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.fx.code.compensator.editor.Outline;
import org.eclipse.fx.code.compensator.editor.Outline.OutlineItem;
+import org.eclipse.fx.ui.controls.Util;
public class FileOutline {
private TreeView<OutlineItem> outlineView;
@@ -40,19 +43,18 @@ public class FileOutline {
TreeCell<OutlineItem> createCell(TreeView<OutlineItem> param) {
return new TreeCell<OutlineItem>() {
- private List<String> currentStyles = Collections.emptyList();
@Override
protected void updateItem(OutlineItem item, boolean empty) {
- super.updateItem(item, empty);
- getStyleClass().removeAll(currentStyles);
+
if( item != null && ! empty ) {
- setText(item.getLabel());
- currentStyles = item.getStyle();
- getStyleClass().addAll(currentStyles);
+ Label value = new Label(item.getLabel().toString());
+ value.getStyleClass().addAll(item.getStyle());
+ setGraphic(value);
} else {
- currentStyles = Collections.emptyList();
- setText("");
+ setGraphic(null);
}
+
+ super.updateItem(item, empty);
}
};
}

Back to the top