package org.docear.plugin.pdfutilities.actions; import java.awt.event.ActionEvent; import java.io.File; import java.net.URI; import java.util.ArrayList; import java.util.List; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import org.docear.plugin.core.CoreConfiguration; import org.docear.plugin.core.DocearController; import org.docear.plugin.core.actions.SaveAsAction; import org.docear.plugin.core.logger.DocearLogEvent; import org.docear.plugin.core.util.NodeUtilities; import org.docear.plugin.pdfutilities.PdfUtilitiesController; import org.docear.plugin.pdfutilities.util.MonitoringUtils; import org.freeplane.core.resources.ResourceController; import org.freeplane.core.ui.EnabledAction; import org.freeplane.core.ui.components.UITools; import org.freeplane.core.util.TextUtils; import org.freeplane.features.link.mindmapmode.MLinkController; import org.freeplane.features.map.NodeModel; import org.freeplane.features.mode.Controller; @EnabledAction( checkOnPopup = true ) public class AddMonitoringFolderAction extends AbstractMonitoringAction { /** * */ private static final long serialVersionUID = 1L; public AddMonitoringFolderAction(String key) { super(key); } public void actionPerformed(ActionEvent e) { NodeModel selected = Controller.getCurrentController().getSelection().getSelected(); if(Controller.getCurrentController().getMap().getFile() == null){ int result = UITools.showConfirmDialog(selected, TextUtils.getText("AddMonitoringFolderAction.0"), TextUtils.getText("AddMonitoringFolderAction.1"), JOptionPane.OK_CANCEL_OPTION); //$NON-NLS-1$ //$NON-NLS-2$ if(result == JOptionPane.OK_OPTION){ SaveAsAction saveAction = new SaveAsAction(); saveAction.actionPerformed(null); /*final boolean savingNotCancelled = ((MFileManager) UrlManager.getController()).save(Controller.getCurrentController().getMap()); if (!savingNotCancelled) { return; }*/ } else{ return; } } JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fileChooser.setDialogTitle(TextUtils.getText("AddMonitoringFolderAction_dialog_title")); //$NON-NLS-1$ int result = fileChooser.showOpenDialog(Controller.getCurrentController().getViewController().getJFrame()); if(result == JFileChooser.APPROVE_OPTION){ File f = fileChooser.getSelectedFile(); URI pdfDir = MLinkController.toLinkTypeDependantURI(Controller.getCurrentController().getMap().getFile(), f); //fileChooser.setDialogTitle(TextUtils.getText("AddMonitoringFolderAction_dialog_title_mindmaps")); //$NON-NLS-1$ //result = fileChooser.showOpenDialog(Controller.getCurrentController().getViewController().getJFrame()); //if(result == JFileChooser.APPROVE_OPTION){ //URI mindmapDir = MLinkController.toLinkTypeDependantURI(Controller.getCurrentController().getMap().getFile(), fileChooser.getSelectedFile()); NodeUtilities.setAttributeValue(selected, PdfUtilitiesController.MON_INCOMING_FOLDER, pdfDir); NodeUtilities.setAttributeValue(selected, PdfUtilitiesController.MON_MINDMAP_FOLDER, CoreConfiguration.LIBRARY_PATH); NodeUtilities.setAttributeValue(selected, PdfUtilitiesController.MON_AUTO, 2); NodeUtilities.setAttributeValue(selected, PdfUtilitiesController.MON_SUBDIRS, 2); if(ResourceController.getResourceController().getBooleanProperty("docear_flatten_subdir")){ NodeUtilities.setAttributeValue(selected, PdfUtilitiesController.MON_FLATTEN_DIRS, 1); } else{ NodeUtilities.setAttributeValue(selected, PdfUtilitiesController.MON_FLATTEN_DIRS, 0); } List<NodeModel> list = new ArrayList<NodeModel>(); list.add(Controller.getCurrentController().getSelection().getSelected()); AddMonitoringFolderAction.updateNodesAgainstMonitoringDir(list, true); //} DocearController.getController().getDocearEventLogger().appendToLog(this, DocearLogEvent.MONITORING_FOLDER_ADD, f); } } @Override public void setEnabled(){ if(Controller.getCurrentController().getSelection() == null) { this.setEnabled(false); return; } NodeModel selected = Controller.getCurrentController().getSelection().getSelected(); if(selected == null){ this.setEnabled(false); } else{ this.setEnabled(!MonitoringUtils.isMonitoringNode(selected)); } } }