You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2020/12/14 22:22:03 UTC
[incubator-hop] branch master updated: HOP-2301 Add icon to each
type of Hop file
This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop.git
The following commit(s) were added to refs/heads/master by this push:
new 850ed02 HOP-2301 Add icon to each type of Hop file
new a1478a3 Merge pull request #468 from nadment/HOP-2301
850ed02 is described below
commit 850ed028f79335e0b07bc28a1a2bae3c84adb9a4
Author: nadment <na...@gmail.com>
AuthorDate: Mon Dec 14 20:39:17 2020 +0100
HOP-2301 Add icon to each type of Hop file
---
.../org/apache/hop/ui/core/gui/GuiResource.java | 14 ++++++++
.../apache/hop/ui/core/vfs/HopVfsFileDialog.java | 40 ++++++++++++++++------
.../apache/hop/ui/hopgui/file/HopFileTypeBase.java | 5 ++-
.../hop/ui/hopgui/file/HopFileTypePlugin.java | 2 ++
.../hop/ui/hopgui/file/HopFileTypePluginType.java | 5 +++
.../hopgui/file/pipeline/HopPipelineFileType.java | 3 +-
.../hopgui/file/workflow/HopWorkflowFileType.java | 3 +-
7 files changed, 58 insertions(+), 14 deletions(-)
diff --git a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
index 7bd3b71..9147a20 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
@@ -188,6 +188,8 @@ public class GuiResource {
private SwtUniversalImage imageArrow;
private SwtUniversalImage imageFolder;
+
+ private SwtUniversalImage imageFile;
private Image imageWizard;
@@ -554,6 +556,7 @@ public class GuiResource {
imageCalendar.dispose();
imageServer.dispose();
imageArrow.dispose();
+ imageFile.dispose();
imageFolder.dispose();
imageWizard.dispose();
imageStart.dispose();
@@ -1074,6 +1077,10 @@ public class GuiResource {
// "ui/images/folder.svg"
imageFolder = SwtSvgImageUtil.getUniversalImage( display, getClass().getClassLoader(), BasePropertyHandler.getProperty( "Folder_image" ) );
+ // "ui/images/file.svg"
+ imageFile = SwtSvgImageUtil.getImageAsResource( display, "ui/images/file.svg" );
+
+
// Makes transparent images "on the fly"
//
@@ -1655,6 +1662,13 @@ public class GuiResource {
}
/**
+ * @return the imageFile
+ */
+ public Image getImageFile() {
+ return getZoomedImaged( imageFile, display, ConstUi.MEDIUM_ICON_SIZE, ConstUi.MEDIUM_ICON_SIZE );
+ }
+
+ /**
* @return the imageStartSmall
*/
public Image getImageStartMedium() {
diff --git a/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java b/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java
index e3714b0..c694ec3 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java
@@ -24,9 +24,12 @@ import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemException;
import org.apache.hop.core.Const;
import org.apache.hop.core.Props;
+import org.apache.hop.core.exception.HopException;
import org.apache.hop.core.gui.plugin.GuiPlugin;
import org.apache.hop.core.gui.plugin.toolbar.GuiToolbarElement;
import org.apache.hop.core.logging.LogChannel;
+import org.apache.hop.core.plugins.IPlugin;
+import org.apache.hop.core.plugins.PluginRegistry;
import org.apache.hop.core.variables.IVariables;
import org.apache.hop.core.vfs.HopVfs;
import org.apache.hop.history.AuditList;
@@ -44,6 +47,9 @@ import org.apache.hop.ui.core.gui.WindowProperty;
import org.apache.hop.ui.core.widget.TextVar;
import org.apache.hop.ui.core.widget.TreeUtil;
import org.apache.hop.ui.hopgui.HopGui;
+import org.apache.hop.ui.hopgui.file.HopFileTypePluginType;
+import org.apache.hop.ui.hopgui.file.HopFileTypeRegistry;
+import org.apache.hop.ui.hopgui.file.IHopFileType;
import org.apache.hop.ui.pipeline.transform.BaseTransformDialog;
import org.apache.hop.ui.util.SwtSvgImageUtil;
import org.eclipse.swt.SWT;
@@ -140,6 +146,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
private FileObject activeFileObject;
private FileObject activeFolder;
+ private Image folderImage;
private Image fileImage;
private static HopVfsFileDialog instance;
@@ -199,13 +206,8 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
}
navigationIndex = navigationHistory.size() - 1;
- fileImage =
- SwtSvgImageUtil.getImage(
- parent.getDisplay(),
- getClass().getClassLoader(),
- "ui/images/file.svg",
- ConstUi.ICON_SIZE,
- ConstUi.ICON_SIZE);
+ fileImage = GuiResource.getInstance().getImageFile();
+ folderImage = GuiResource.getInstance().getImageFolder();
}
/**
@@ -443,7 +445,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
wBrowser = new Tree(browseSash, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
props.setLook(wBrowser);
wBrowser.setHeaderVisible(true);
- wBrowser.setLinesVisible(true); // TODO needed?
+ wBrowser.setLinesVisible(false); // TODO needed?
TreeColumn folderColumn = new TreeColumn(wBrowser, SWT.LEFT);
folderColumn.setText("Name");
@@ -763,7 +765,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
fileObjectsMap = new HashMap<>();
TreeItem parentFolderItem = new TreeItem(wBrowser, SWT.NONE);
- parentFolderItem.setImage(GuiResource.getInstance().getImageFolder());
+ parentFolderItem.setImage(folderImage);
parentFolderItem.setText(activeFolder.getName().getBaseName());
fileObjectsMap.put(getTreeItemPath(parentFolderItem), activeFolder);
@@ -853,7 +855,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
continue;
}
TreeItem childFolderItem = new TreeItem(folderItem, SWT.NONE);
- childFolderItem.setImage(GuiResource.getInstance().getImageFolder());
+ childFolderItem.setImage(folderImage);
childFolderItem.setText(child.getName().getBaseName());
fileObjectsMap.put(getTreeItemPath(childFolderItem), child);
}
@@ -882,7 +884,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
//
if (selectFile) {
TreeItem childFileItem = new TreeItem(folderItem, SWT.NONE);
- childFileItem.setImage(fileImage);
+ childFileItem.setImage(getFileImage(child));
childFileItem.setFont(GuiResource.getInstance().getFontBold());
childFileItem.setText(0, child.getName().getBaseName());
childFileItem.setText(1, getFileDate(child));
@@ -904,6 +906,22 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
}
}
}
+
+ private Image getFileImage(FileObject file) {
+ try {
+ IHopFileType<?> fileType = HopFileTypeRegistry.getInstance().findHopFileType(file.getName().getBaseName());
+ if ( fileType!=null ) {
+ IPlugin plugin = PluginRegistry.getInstance().getPlugin(HopFileTypePluginType.class, fileType);
+ if ( plugin!=null && plugin.getImageFile()!=null ) {
+ return GuiResource.getInstance().getImage(plugin.getImageFile(), ConstUi.SMALL_ICON_SIZE, ConstUi.SMALL_ICON_SIZE);
+ }
+ }
+ } catch (HopException e) {
+ // Ignore
+ }
+
+ return fileImage;
+}
private String getFileSize(FileObject child) {
try {
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java
index 6bf0c47..b77f1be 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java
@@ -25,9 +25,9 @@ package org.apache.hop.ui.hopgui.file;
import org.apache.commons.vfs2.FileName;
import org.apache.commons.vfs2.FileObject;
import org.apache.hop.core.exception.HopException;
+import org.apache.hop.core.util.Utils;
import org.apache.hop.core.vfs.HopVfs;
import org.apache.hop.core.xml.IXml;
-
import java.util.Properties;
public abstract class HopFileTypeBase<T extends IXml> implements IHopFileType<T> {
@@ -58,6 +58,9 @@ public abstract class HopFileTypeBase<T extends IXml> implements IHopFileType<T>
FileName fileName = fileObject.getName();
String fileExtension = fileName.getExtension();
+ // No extension
+ if ( Utils.isEmpty(fileExtension) ) return false;
+
// Verify the extension
//
for ( String typeExtension : getFilterExtensions() ) {
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePlugin.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePlugin.java
index 9b579c9..cee1547 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePlugin.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePlugin.java
@@ -42,4 +42,6 @@ public @interface HopFileTypePlugin {
String name() default "";
String description() default "";
+
+ String image() default "";
}
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePluginType.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePluginType.java
index d9202dd..cdb4231 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePluginType.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePluginType.java
@@ -61,4 +61,9 @@ public class HopFileTypePluginType extends BasePluginType<HopFileTypePlugin> imp
protected String extractName( HopFileTypePlugin annotation ) {
return annotation.name();
}
+
+ @Override
+ protected String extractImageFile( HopFileTypePlugin annotation ) {
+ return annotation.image();
+ }
}
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopPipelineFileType.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopPipelineFileType.java
index 411a3af..3d5a285 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopPipelineFileType.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopPipelineFileType.java
@@ -49,7 +49,8 @@ import java.util.Properties;
@HopFileTypePlugin(
id = "HopFile-Pipeline-Plugin",
- description = "The pipeline file information for the Hop GUI"
+ description = "The pipeline file information for the Hop GUI",
+ image="ui/images/PPL.svg"
)
public class HopPipelineFileType<T extends PipelineMeta> extends HopFileTypeBase<T> implements IHopFileType<T> {
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopWorkflowFileType.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopWorkflowFileType.java
index ecec63b..fd90d6b 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopWorkflowFileType.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopWorkflowFileType.java
@@ -48,7 +48,8 @@ import java.util.Properties;
@HopFileTypePlugin(
id = "HopFile-Workflow-Plugin",
- description = "The workflow file information for the Hop GUI"
+ description = "The workflow file information for the Hop GUI",
+ image="ui/images/workflow3.svg"
)
public class HopWorkflowFileType<T extends WorkflowMeta> extends HopFileTypeBase<T> implements IHopFileType<T> {