/** * author: Marcel Genzmehr * 18.08.2011 */ package org.docear.plugin.core.workspace.creator; import java.net.URI; import org.docear.plugin.core.CoreConfiguration; import org.docear.plugin.core.ui.LocationDialog; import org.docear.plugin.core.workspace.node.FolderTypeLiteratureRepositoryNode; import org.freeplane.n3.nanoxml.XMLElement; import org.freeplane.plugin.workspace.WorkspaceController; import org.freeplane.plugin.workspace.WorkspaceUtils; import org.freeplane.plugin.workspace.model.AWorkspaceNodeCreator; import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode; /** * */ public class FolderTypeLiteratureRepositoryCreator extends AWorkspaceNodeCreator { public static final String FOLDER_TYPE_LITERATUREREPOSITORY = "literature_repository"; /*********************************************************************************** * CONSTRUCTORS **********************************************************************************/ /*********************************************************************************** * METHODS **********************************************************************************/ /*********************************************************************************** * REQUIRED METHODS FOR INTERFACES **********************************************************************************/ public AWorkspaceTreeNode getNode(XMLElement data) { String type = data.getAttribute("type", FOLDER_TYPE_LITERATUREREPOSITORY); FolderTypeLiteratureRepositoryNode node = new FolderTypeLiteratureRepositoryNode(type); // TODO: add missing attribute handling String path = data.getAttribute("path", null); boolean descending = Boolean.parseBoolean(data.getAttribute("orderDescending", "false")); node.orderDescending(descending); if (path == null || path.length()==0) { URI uri = CoreConfiguration.repositoryPathObserver.getUri(); if (uri == null) { LocationDialog.showWorkspaceChooserDialog(); } else { node.setPath(uri); } return node; } node.setPath(URI.create(path)); return node; } public void endElement(final Object parent, final String tag, final Object node, final XMLElement lastBuiltElement) { super.endElement(parent, tag, node, lastBuiltElement); if (node == null || ((FolderTypeLiteratureRepositoryNode) node).getPath() == null) { return; } if (node instanceof FolderTypeLiteratureRepositoryNode && ((FolderTypeLiteratureRepositoryNode) node).getChildCount() == 0) { WorkspaceController .getController() .getFilesystemMgr() .scanFileSystem((AWorkspaceTreeNode) node, WorkspaceUtils.resolveURI(((FolderTypeLiteratureRepositoryNode) node).getPath())); } } }