package org.docear.plugin.core.workspace.actions;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.JFileChooser;
import org.docear.plugin.core.workspace.model.DocearWorkspaceProject;
import org.docear.plugin.core.workspace.node.FolderTypeLiteratureRepositoryNode;
import org.docear.plugin.core.workspace.node.LiteratureRepositoryPathNode;
import org.freeplane.core.ui.EnabledAction;
import org.freeplane.core.ui.components.UITools;
import org.freeplane.features.url.UrlManager;
import org.freeplane.plugin.workspace.URIUtils;
import org.freeplane.plugin.workspace.WorkspaceController;
import org.freeplane.plugin.workspace.actions.AWorkspaceAction;
import org.freeplane.plugin.workspace.components.IWorkspaceView;
import org.freeplane.plugin.workspace.components.menu.CheckEnableOnPopup;
import org.freeplane.plugin.workspace.model.project.AWorkspaceProject;
@CheckEnableOnPopup
@EnabledAction(checkOnNodeChange=true)
public class DocearAddRepositoryPathAction extends AWorkspaceAction {
private static final long serialVersionUID = 1L;
public static final String KEY = "workspace.action.node.add.repository";
/***********************************************************************************
* CONSTRUCTORS
**********************************************************************************/
public DocearAddRepositoryPathAction() {
super(KEY);
}
/***********************************************************************************
* METHODS
**********************************************************************************/
public void setEnabled() {
setEnabled(DocearWorkspaceProject.isCompatible(WorkspaceController.getSelectedProject()));
}
/***********************************************************************************
* REQUIRED METHODS FOR INTERFACES
**********************************************************************************/
@Override
public void actionPerformed(ActionEvent e) {
AWorkspaceProject project = WorkspaceController.getSelectedProject();
if(DocearWorkspaceProject.isCompatible(project)) {
FolderTypeLiteratureRepositoryNode litRepoNode = project.getExtensions(FolderTypeLiteratureRepositoryNode.class);
if(litRepoNode == null) {
return;
}
JFileChooser fileChooser = UrlManager.getController().getFileChooser(null, true, true);
fileChooser.setSelectedFile(URIUtils.getFile(project.getProjectHome()));
fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.setMultiSelectionEnabled(false);
int retVal = fileChooser.showOpenDialog(UITools.getFrame());
if (retVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
if(file == null) {
return;
}
LiteratureRepositoryPathNode pathNode = new LiteratureRepositoryPathNode();
pathNode.setPath(project.getRelativeURI(file.toURI()));
pathNode.setName(file.getName());
pathNode.setSystem(true);
project.getModel().addNodeTo(pathNode, litRepoNode);
litRepoNode.refresh();
IWorkspaceView view = WorkspaceController.getCurrentModeExtension().getView();
if(view != null) {
view.refreshView();
}
}
}
}
}