/** * SlingBeans - NetBeans Sling plugin * https://github.com/jkan997/SlingBeans * Licensed under Apache 2.0 license * http://www.apache.org/licenses/LICENSE-2.0 */ package org.jkan997.slingbeans.nbactions; import java.awt.event.ActionEvent; import java.io.File; import java.io.Writer; import org.jkan997.slingbeans.helper.LogHelper; import org.jkan997.slingbeans.helper.StringHelper; import org.jkan997.slingbeans.dialogs.SlingCheckoutDialog; import org.jkan997.slingbeans.helper.SwingHelper; import org.jkan997.slingbeans.nbservices.SlingFsConnector; import org.jkan997.slingbeans.nbservices.SlingFsFactory; import org.jkan997.slingbeans.nbtree.SlingNode; import org.jkan997.slingbeans.slingfs.FileSystem; import org.jkan997.slingbeans.slingfs.FileSystemConnector; import org.jkan997.slingbeans.slingfs.FileSystemFactory; import org.jkan997.slingbeans.sync.SyncDescriptor; import org.jkan997.slingbeans.sync.Synchronizer; import org.openide.awt.ActionID; import org.openide.awt.ActionReference; import org.openide.awt.ActionReferences; import org.openide.awt.ActionRegistration; import org.openide.filesystems.FileObject; import org.openide.loaders.DataObject; import org.openide.util.Utilities; public class CheckoutAction extends AbstractAction { private SlingNode node; private final DataObject context; public CheckoutAction(DataObject context) { this.setActionName("Sling Checkout..."); this.context = context; } public void setNode(SlingNode node) { this.node = node; } @Override public void actionPerformed(ActionEvent e) { File localFile = null; try { FileObject fo = context.getPrimaryFile(); localFile = Utilities.toFile(fo.toURI()); } catch (Exception ex) { LogHelper.logError(ex); } File syncDescFile = SyncDescriptor.findSyncDescriptor(localFile); if (syncDescFile != null) { SwingHelper.showMessage("Tree already checked out"); return; } SlingCheckoutDialog scd = new SlingCheckoutDialog(null, true); SlingFsFactory slingFsFactory = SlingFsFactory.lookup(); String fsId = slingFsFactory.getDefualtFileSystemId(); scd.setLocalPath(localFile.getAbsolutePath()); if (fsId == null) { SwingHelper.showMessage("Please connect to Sling before checkout"); return; } FileSystem fs = slingFsFactory.getFileSystem(fsId); scd.setRemoteHost(fs.getFileSystemId()); SwingHelper.showDialog(scd); if (scd.isCheckout()) { String jcrPath = scd.getFolderPath(); jcrPath = StringHelper.normalizePath(jcrPath); File localFolder = new File(scd.getLocalPath()); if (!localFolder.exists()) { localFolder.mkdir(); } FileSystemFactory fsf = FileSystemFactory.getInstance(); Writer logWriter = this.getOutputWriter(); logHeader("CHECKOUT ACTION"); FileSystemConnector fsc = new SlingFsConnector(); String bndPath = scd.getBndPath(); if ((bndPath!=null)&&(bndPath.startsWith("/"))) bndPath=bndPath.substring(1); Synchronizer sync = new Synchronizer(fsc, fsId, jcrPath, bndPath, localFolder); sync.setLogWriter(logWriter); SyncDescriptor syncEntryMap = sync.check(); sync.synchronize(null); } } public void actionPerformedx(ActionEvent e) { /* OpenProjects openProjects = OpenProjects.getDefault(); Project[] projects = openProjects.getOpenProjects(); for (Project p : projects) { LogHelper.logInfo(this, p.toString()); LogHelper.logInfo(this, p.getProjectDirectory().toURL().toString()); } IOProvider iop = IOProvider.getDefault(); InputOutput io = iop.getIO("Checkout", true); io.getOut().append("Check out ! LALALAL");*/ } }