@Override protected void doPaste(Object targetObject, Object[] sourceObjects) { // Get the model IBundleModel model = getBundleModel(); // Ensure the model is defined if (model == null) { return; } // Get the bundle IBundle bundle = model.getBundle(); // Paste all source objects for (Object sourceObject : sourceObjects) { if (sourceObject instanceof ExportPackageObject) { ExportPackageObject exportPackageObject = (ExportPackageObject) sourceObject; // Export package object // Adjust all the source object transient field values to // acceptable values exportPackageObject.reconnect(model, fHeader, getVersionAttribute()); // Add the object to the header if (fHeader == null) { // Export package header not defined yet // Define one // Value will get inserted into a new export package object // created by a factory // Value needs to be empty string so no export package // object is created as the initial value bundle.setHeader(getExportedPackageHeader(), ""); // $NON-NLS-1$ } // Add the export package to the header fHeader.addPackage(exportPackageObject); } } }
private void handleAdd() { IPluginModelBase model = (IPluginModelBase) getPage().getModel(); final IProject project = model.getUnderlyingResource().getProject(); try { if (project.hasNature(JavaCore.NATURE_ID)) { ILabelProvider labelProvider = new JavaElementLabelProvider(); final ConditionalListSelectionDialog dialog = new ConditionalListSelectionDialog( PDEPlugin.getActiveWorkbenchShell(), labelProvider, PDEUIMessages.ExportPackageSection_dialogButtonLabel); final Collection<?> pckgs = fHeader == null ? new Vector<>() : fHeader.getPackageNames(); final boolean allowJava = "true".equals(getBundle().getHeader(ICoreConstants.ECLIPSE_JREBUNDLE)); // $NON-NLS-1$ Runnable runnable = new Runnable() { @Override public void run() { ArrayList<IPackageFragment> elements = new ArrayList<>(); ArrayList<IPackageFragment> conditional = new ArrayList<>(); IPackageFragment[] fragments = PDEJavaHelper.getPackageFragments(JavaCore.create(project), pckgs, allowJava); for (IPackageFragment fragment : fragments) { try { if (fragment.containsJavaResources()) { elements.add(fragment); } else { conditional.add(fragment); } } catch (JavaModelException e) { } } dialog.setElements(elements.toArray()); dialog.setConditionalElements(conditional.toArray()); dialog.setMultipleSelection(true); dialog.setMessage(PDEUIMessages.PackageSelectionDialog_label); dialog.setTitle(PDEUIMessages.ExportPackageSection_title); dialog.create(); PlatformUI.getWorkbench() .getHelpSystem() .setHelp(dialog.getShell(), IHelpContextIds.EXPORT_PACKAGES); SWTUtil.setDialogSize(dialog, 400, 500); } }; BusyIndicator.showWhile(Display.getCurrent(), runnable); if (dialog.open() == Window.OK) { Object[] selected = dialog.getResult(); if (fHeader != null) { for (Object selectedObject : selected) { IPackageFragment candidate = (IPackageFragment) selectedObject; fHeader.addPackage( new ExportPackageObject(fHeader, candidate, getVersionAttribute())); } } else { getBundle().setHeader(getExportedPackageHeader(), getValue(selected)); // the way events get triggered, updateButtons isn't called if (selected.length > 0) getTablePart().setButtonEnabled(CALCULATE_USE_INDEX, true); } } labelProvider.dispose(); } } catch (CoreException e) { } }