/* (non-Javadoc) * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getTransfers() */ protected PreferenceTransferElement[] getTransfers() { if (validFromFile()) { FileInputStream fis; try { fis = new FileInputStream(getDestinationValue()); } catch (FileNotFoundException e) { WorkbenchPlugin.log(e.getMessage(), e); return new PreferenceTransferElement[0]; } IPreferencesService service = Platform.getPreferencesService(); try { IExportedPreferences prefs; prefs = service.readPreferences(fis); PreferenceTransferElement[] transfers = super.getTransfers(); IPreferenceFilter[] filters = new IPreferenceFilter[transfers.length]; for (int i = 0; i < transfers.length; i++) { PreferenceTransferElement transfer = transfers[i]; filters[i] = transfer.getFilter(); } IPreferenceFilter[] matches = service.matches(prefs, filters); PreferenceTransferElement[] returnTransfers = new PreferenceTransferElement[matches.length]; int index = 0; for (int i = 0; i < matches.length; i++) { IPreferenceFilter filter = matches[i]; for (int j = 0; j < transfers.length; j++) { PreferenceTransferElement element = transfers[j]; if (element.getFilter().equals(filter)) { returnTransfers[index++] = element; } } } PreferenceTransferElement[] destTransfers = new PreferenceTransferElement[index]; System.arraycopy(returnTransfers, 0, destTransfers, 0, index); return destTransfers; } catch (CoreException e) { // Do not log core exceptions, they indicate the chosen file is not valid // WorkbenchPlugin.log(e.getMessage(), e); } finally { try { fis.close(); } catch (IOException e) { WorkbenchPlugin.log(e.getMessage(), e); } } } return new PreferenceTransferElement[0]; }
/** * @param filters * @return <code>true</code> if the transfer was succesful, and <code>false</code> otherwise */ protected boolean transfer(IPreferenceFilter[] filters) { File importFile = new File(getDestinationValue()); FileInputStream fis = null; try { if (filters.length > 0) { try { fis = new FileInputStream(importFile); } catch (FileNotFoundException e) { WorkbenchPlugin.log(e.getMessage(), e); MessageDialog.open( MessageDialog.ERROR, getControl().getShell(), new String(), e.getLocalizedMessage(), SWT.SHEET); return false; } IPreferencesService service = Platform.getPreferencesService(); try { IExportedPreferences prefs = service.readPreferences(fis); service.applyPreferences(prefs, filters); } catch (CoreException e) { WorkbenchPlugin.log(e.getMessage(), e); MessageDialog.open( MessageDialog.ERROR, getControl().getShell(), new String(), e.getLocalizedMessage(), SWT.SHEET); return false; } } } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { WorkbenchPlugin.log(e.getMessage(), e); MessageDialog.open( MessageDialog.ERROR, getControl().getShell(), new String(), e.getLocalizedMessage(), SWT.SHEET); } } } return true; }