26 import org.eclipse.core.runtime.IProgressMonitor; |
26 import org.eclipse.core.runtime.IProgressMonitor; |
27 import org.eclipse.core.runtime.IStatus; |
27 import org.eclipse.core.runtime.IStatus; |
28 import org.eclipse.core.runtime.Path; |
28 import org.eclipse.core.runtime.Path; |
29 import org.eclipse.core.runtime.Status; |
29 import org.eclipse.core.runtime.Status; |
30 import org.eclipse.jface.dialogs.DialogPage; |
30 import org.eclipse.jface.dialogs.DialogPage; |
31 import org.eclipse.jface.layout.GridDataFactory; |
|
32 import org.eclipse.jface.layout.GridLayoutFactory; |
|
33 import org.eclipse.jface.viewers.CheckStateChangedEvent; |
31 import org.eclipse.jface.viewers.CheckStateChangedEvent; |
34 import org.eclipse.jface.viewers.ICheckStateListener; |
32 import org.eclipse.jface.viewers.ICheckStateListener; |
35 import org.eclipse.swt.SWT; |
33 import org.eclipse.swt.SWT; |
36 import org.eclipse.swt.events.SelectionAdapter; |
34 import org.eclipse.swt.events.SelectionAdapter; |
37 import org.eclipse.swt.events.SelectionEvent; |
35 import org.eclipse.swt.events.SelectionEvent; |
38 import org.eclipse.swt.widgets.Button; |
|
39 import org.eclipse.swt.widgets.Composite; |
36 import org.eclipse.swt.widgets.Composite; |
40 import org.eclipse.swt.widgets.FileDialog; |
37 import org.eclipse.swt.widgets.FileDialog; |
41 import org.eclipse.ui.progress.UIJob; |
38 import org.eclipse.ui.progress.UIJob; |
42 |
39 |
43 import com.nokia.cpp.internal.api.utils.ui.BrowseDialogUtils; |
40 import com.nokia.cpp.internal.api.utils.ui.BrowseDialogUtils; |
60 public void createControl(Composite parent) { |
57 public void createControl(Composite parent) { |
61 super.createControl(parent); |
58 super.createControl(parent); |
62 Composite composite = (Composite) getControl(); |
59 Composite composite = (Composite) getControl(); |
63 |
60 |
64 createViewerGroup(composite, "Export features:"); |
61 createViewerGroup(composite, "Export features:"); |
65 createBrowseGroup(composite, "Export to file:"); |
62 createBrowseGroup(composite, "Export file:"); |
66 |
63 |
67 featureInfos = new ArrayList<FeatureInfo>(); |
64 featureInfos = new ArrayList<FeatureInfo>(); |
68 |
65 |
69 setPageComplete(validatePage()); |
66 setPageComplete(validatePage()); |
70 } |
67 } |
108 |
105 |
109 private void startGetInputJob() { |
106 private void startGetInputJob() { |
110 UIJob j = new UIJob("Getting Installed Features") { |
107 UIJob j = new UIJob("Getting Installed Features") { |
111 @Override |
108 @Override |
112 public IStatus runInUIThread(IProgressMonitor monitor) { |
109 public IStatus runInUIThread(IProgressMonitor monitor) { |
113 viewer.setInput(FeatureUtils.getInstalledFeatures(monitor)); |
110 viewer.setInput(P2Utils.getInstalledFeatures(monitor)); |
114 updateViewer(); |
111 updateViewer(); |
115 return Status.OK_STATUS; |
112 return Status.OK_STATUS; |
116 } |
113 } |
117 }; |
114 }; |
118 j.schedule(); |
115 j.schedule(); |
119 } |
116 } |
120 |
117 |
121 protected boolean validatePage() { |
118 protected boolean validatePage() { |
122 setErrorMessage(null); |
119 setErrorMessage(null); |
|
120 if (viewer.getTable().getItemCount() == 0) { |
|
121 setErrorMessage("There are no features to export"); |
|
122 return false; |
|
123 } |
123 if (viewer.getCheckedElements().length == 0) { |
124 if (viewer.getCheckedElements().length == 0) { |
124 setErrorMessage("At least one feature must be selected for export"); |
125 setErrorMessage("At least one feature must be selected for export"); |
125 return false; |
126 return false; |
126 } |
127 } |
127 |
128 |