diff options
Diffstat (limited to 'rpm/org.eclipse.linuxtools.rpm.createrepo/src/org/eclipse/linuxtools/internal/rpm/createrepo/form/ImportRPMsPage.java')
-rw-r--r-- | rpm/org.eclipse.linuxtools.rpm.createrepo/src/org/eclipse/linuxtools/internal/rpm/createrepo/form/ImportRPMsPage.java | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/rpm/org.eclipse.linuxtools.rpm.createrepo/src/org/eclipse/linuxtools/internal/rpm/createrepo/form/ImportRPMsPage.java b/rpm/org.eclipse.linuxtools.rpm.createrepo/src/org/eclipse/linuxtools/internal/rpm/createrepo/form/ImportRPMsPage.java index bc7d267b35..4b45cbe94e 100644 --- a/rpm/org.eclipse.linuxtools.rpm.createrepo/src/org/eclipse/linuxtools/internal/rpm/createrepo/form/ImportRPMsPage.java +++ b/rpm/org.eclipse.linuxtools.rpm.createrepo/src/org/eclipse/linuxtools/internal/rpm/createrepo/form/ImportRPMsPage.java @@ -26,12 +26,17 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.ToolBarManager; +import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.linuxtools.internal.rpm.createrepo.Activator; import org.eclipse.linuxtools.internal.rpm.createrepo.Messages; +import org.eclipse.linuxtools.internal.rpm.createrepo.dnd.ImportRPMDropListener; import org.eclipse.linuxtools.rpm.createrepo.CreaterepoProject; import org.eclipse.linuxtools.rpm.createrepo.CreaterepoUtils; import org.eclipse.linuxtools.rpm.createrepo.ICreaterepoConstants; import org.eclipse.swt.SWT; +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; @@ -147,8 +152,11 @@ public class ImportRPMsPage extends FormPage implements IResourceChangeListener layout = new GridLayout(2, false); layout.marginWidth = 1; layout.marginHeight = 7; sectionClient.setLayout(layout); - tree = toolkit.createTree(sectionClient, SWT.BORDER | SWT.MULTI | SWT.HORIZONTAL + TreeViewer viewer = new TreeViewer(sectionClient, SWT.BORDER | SWT.MULTI | SWT.HORIZONTAL | SWT.VERTICAL | SWT.LEFT_TO_RIGHT | SWT.SMOOTH); + viewer.addDropSupport(DND.DROP_COPY, new Transfer[] {FileTransfer.getInstance()}, + new ImportRPMDropListener(viewer, project)); + tree = viewer.getTree(); tree.setLayoutData(expandComposite()); buttonList = toolkit.createComposite(sectionClient); @@ -398,9 +406,10 @@ public class ImportRPMsPage extends FormPage implements IResourceChangeListener (delta.getFlags() | delta.getKind()) == (IResourceDelta.OPEN | IResourceDelta.CHANGED)) { return false; } - // get the files that were removed and exit if nothing was removed + // get the files that were removed/added and exit if nothing was removed/added IResourceDelta[] removedFiles = delta.getAffectedChildren(IResourceDelta.REMOVED); - if (removedFiles.length <= 0) { + IResourceDelta[] addedFiles = delta.getAffectedChildren(IResourceDelta.ADDED); + if (removedFiles.length <= 0 && addedFiles.length == 0) { return false; } // check if at least 1 of the files removed is an RPM and break out if so @@ -412,8 +421,17 @@ public class ImportRPMsPage extends FormPage implements IResourceChangeListener break; } } - // exit if none of the removed files is an RPM; no need to update list - if (!rpmsDeleted) { + // check if at least 1 of the files added is an RPM and break out if so + boolean rpmsAdded = false; + for (IResourceDelta resourceDelta : addedFiles) { + String extension = resourceDelta.getResource().getFileExtension(); + if (extension != null && extension.equals(ICreaterepoConstants.RPM_FILE_EXTENSION)) { + rpmsAdded = true; + break; + } + } + // exit if none of the removed/added files is an RPM; no need to update list + if (!rpmsDeleted && !rpmsAdded) { return false; } // deals with updating the UI of the page |