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 org.docear.plugin.core.DocearController; import org.docear.plugin.core.logger.DocearLogEvent; import org.docear.plugin.core.util.NodeUtilities; import org.docear.plugin.core.util.Tools; import org.docear.plugin.pdfutilities.PdfUtilitiesController; import org.docear.plugin.pdfutilities.util.MonitoringUtils; import org.freeplane.core.ui.EnabledAction; 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 EditMonitoringFolderAction extends AbstractMonitoringAction { /** * */ private static final long serialVersionUID = 1L; public EditMonitoringFolderAction(String key) { super(key); } public void actionPerformed(ActionEvent e) { JFileChooser fileChooser; Object value = MonitoringUtils.getPdfDirFromMonitoringNode((Controller.getCurrentController().getSelection().getSelected())); if(value != null){ fileChooser = new JFileChooser(Tools.getFilefromUri(Tools.getAbsoluteUri((URI)value))); } else{ 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()); NodeModel selected = Controller.getCurrentController().getSelection().getSelected(); NodeUtilities.setAttributeValue(selected, PdfUtilitiesController.MON_INCOMING_FOLDER, pdfDir); NodeUtilities.setAttributeValue(selected, PdfUtilitiesController.MON_MINDMAP_FOLDER, mindmapDir); List<NodeModel> list = new ArrayList<NodeModel>(); list.add(Controller.getCurrentController().getSelection().getSelected()); DocearController.getController().getDocearEventLogger().appendToLog(this, DocearLogEvent.MONITORING_FOLDER_EDIT, f); AddMonitoringFolderAction.updateNodesAgainstMonitoringDir(list, true); } } } @Override public void setEnabled() { NodeModel selected = Controller.getCurrentController().getSelection().getSelected(); if(selected == null){ this.setEnabled(false); } else{ this.setEnabled(MonitoringUtils.isMonitoringNode(selected)); } } }