package org.freeplane.plugin.workspace.nodes; import java.awt.Component; import java.io.File; import java.io.FileFilter; import java.net.URI; import java.util.Locale; import org.freeplane.core.util.TextUtils; import org.freeplane.plugin.workspace.URIUtils; import org.freeplane.plugin.workspace.WorkspaceController; import org.freeplane.plugin.workspace.components.menu.WorkspacePopupMenu; import org.freeplane.plugin.workspace.components.menu.WorkspacePopupMenuBuilder; import org.freeplane.plugin.workspace.event.IWorkspaceNodeActionListener; import org.freeplane.plugin.workspace.event.WorkspaceActionEvent; import org.freeplane.plugin.workspace.io.IFileSystemRepresentation; import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode; import org.freeplane.plugin.workspace.model.project.AWorkspaceProject; public class FolderTypeMyFilesNode extends AFolderNode implements IWorkspaceNodeActionListener , IFileSystemRepresentation { public static final String TYPE = "myFiles"; private static final long serialVersionUID = 1L; private final AWorkspaceProject project; private static WorkspacePopupMenu popupMenu = null; private boolean orderDescending = false; public FolderTypeMyFilesNode(AWorkspaceProject project) { super(TYPE); this.project = project; } public String getName() { return TextUtils.getText(FolderTypeMyFilesNode.class.getName().toLowerCase(Locale.ENGLISH)+".name"); } @Override public URI getPath() { return project.getProjectHome(); } public AWorkspaceTreeNode clone() { return super.clone(new FolderTypeMyFilesNode(project)); } public boolean isSystem() { return true; } public boolean isTransferable() { return false; } /*********************************************************************************** * REQUIRED METHODS FOR INTERFACES **********************************************************************************/ public void handleAction(WorkspaceActionEvent event) { if (event.getType() == WorkspaceActionEvent.MOUSE_RIGHT_CLICK) { showPopup((Component) event.getBaggage(), event.getX(), event.getY()); } } public void initializePopup() { if (popupMenu == null) { popupMenu = new WorkspacePopupMenu(); WorkspacePopupMenuBuilder.addActions(popupMenu, new String[] { WorkspacePopupMenuBuilder.createSubMenu(TextUtils.getRawText("workspace.action.new.label")), "workspace.action.node.new.folder", "workspace.action.file.new.mindmap", WorkspacePopupMenuBuilder.endSubMenu(), WorkspacePopupMenuBuilder.SEPARATOR, "workspace.action.node.open.location", WorkspacePopupMenuBuilder.SEPARATOR, "workspace.action.node.cut", "workspace.action.node.copy", "workspace.action.node.paste", WorkspacePopupMenuBuilder.SEPARATOR, "workspace.action.node.physical.sort", WorkspacePopupMenuBuilder.SEPARATOR, "workspace.action.node.refresh" }); } } public WorkspacePopupMenu getContextMenu() { if (popupMenu == null) { initializePopup(); } return popupMenu; } public void refresh() { try { File file = URIUtils.getAbsoluteFile(getPath()); if (file != null) { getModel().removeAllElements(this); WorkspaceController.getFileSystemMgr().scanFileSystem(this, file, false, new FileFilter() { public boolean accept(File pathname) { if("_data".equals(pathname.getName())) { return false; } return true; } }); getModel().reload(this); } } catch (Exception e) { e.printStackTrace(); } } public final String getTagName() { return null; } public File getFile() { return URIUtils.getAbsoluteFile(getPath()); } public void orderDescending(boolean enable) { this.orderDescending = enable; } public boolean orderDescending() { return orderDescending; } }