Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java28
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

Back to the top