⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bsfpreferencepage.java

📁 一个java写的business process management系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	}

	/**
	 * Returns a height hint for a button control.
	 */
	public static int getButtonHeigthHint(Button button) {
		GC gc = new GC(button);
		gc.setFont(button.getFont());
		FontMetrics fFontMetrics = gc.getFontMetrics();
		gc.dispose();
		return Dialog.convertVerticalDLUsToPixels(
			fFontMetrics,
			IDialogConstants.BUTTON_HEIGHT);
	}

	private void handleAddButtonPressed() {
		BSFEngineDialog dialog = new BSFEngineDialog(getShell(), Flow4JPlugin.getResourceString("PreferencePage_BSFEngine.title")); //$NON-NLS-1$
		dialog.addEngineClassField(LANGUAGE_LABEL, null, false);
		dialog.addLanguageField(ENGINECLASS_LABEL, null, false);
		dialog.addEngineClassField(EXTENSIONS_LABEL, null, false);

		if (dialog.open() != Window.OK) {
			return;
		}
		addEngineDesc(
			getBSFManager().newEngineDescriptor(
				dialog.getStringValue(LANGUAGE_LABEL).trim(),
				dialog.getStringValue(ENGINECLASS_LABEL).trim(),
				dialog.getStringValue(EXTENSIONS_LABEL).trim()));
	}

	/**
	 * Attempts to add the given engine descriptor. Returns whether the engine descriptor
	 * was added or not (as when the user answers not to overwrite an
	 * existing engine descriptor).
	 * @param desc the variable to add
	 * @return whether the engine descriptor was added
	 */
	public boolean addEngineDesc(BSFEngineDescriptor desc) {
		String language = desc.getLanguage();
		List editedDescs = engineDescContentProvider.getVariables();
		Iterator iter = editedDescs.iterator();
		while (iter.hasNext()) {
			BSFEngineDescriptor currentDesc =
				(BSFEngineDescriptor) iter.next();
			String currLang = currentDesc.getLanguage();
			if (currLang.equals(language)) {
				boolean overWrite = MessageDialog.openQuestion(getShell(), Flow4JPlugin.getResourceString("PreferencePage_BSF_Overwrite.title"), MessageFormat.format(Flow4JPlugin.getResourceString("PreferencePage_BSF_Overwrite_Question.label"), new String[] { language })); //$NON-NLS-1$ //$NON-NLS-2$
				if (!overWrite) {
					return false;
				}
				engineDescContentProvider.removeDescriptors(
					new BSFEngineDescriptor[] { currentDesc });
				break;
			}
		}
		engineDescContentProvider.addVariables(
			new BSFEngineDescriptor[] { desc });
		engineDescTable.refresh();
		return true;
	}

	private void handleEditButtonPressed() {
		IStructuredSelection selection =
			(IStructuredSelection) engineDescTable.getSelection();
		BSFEngineDescriptor desc =
			(BSFEngineDescriptor) selection.getFirstElement();
		BSFEngineDialog dialog = new BSFEngineDialog(getShell(), Flow4JPlugin.getResourceString("PreferencePage_BSFEngine.title")); //$NON-NLS-1$
		dialog.addLanguageField(LANGUAGE_LABEL, desc.getLanguage(), false);
		dialog.addEngineClassField(ENGINECLASS_LABEL, desc.getEngineClassName(), true);
		dialog.addExtensionsField(EXTENSIONS_LABEL, desc.getExtensionsStr(), true);

		if (dialog.open() == Window.OK) {
			desc.setUpdated(true);
			desc.setLanguage(dialog.getStringValue(LANGUAGE_LABEL));
			desc.setEngineClassName(dialog.getStringValue(ENGINECLASS_LABEL));
			desc.setExtensions(dialog.getStringValue(EXTENSIONS_LABEL));
			engineDescTable.update(desc, null);
		}
	}

	/**
	 * Remove the selection variables.
	 */
	private void handleRemoveButtonPressed() {
		IStructuredSelection selection =
			(IStructuredSelection) engineDescTable.getSelection();
		List variablesToRemove = selection.toList();
		StringBuffer contributedVariablesToRemove = new StringBuffer();
		Iterator iter = variablesToRemove.iterator();
		while (iter.hasNext()) {
			BSFEngineDescriptor desc = (BSFEngineDescriptor) iter.next();
			contributedVariablesToRemove.append('\t').append(
				desc.getLanguage()).append(
				'\n');
		}
		if (contributedVariablesToRemove.length() > 0) {
			boolean remove = MessageDialog.openQuestion(getShell(), Flow4JPlugin.getResourceString("PreferencePage_BSF_Remove_Message1.label"), MessageFormat.format(Flow4JPlugin.getResourceString("PreferencePage_BSF_Remove_Message2.label"), new String[] { contributedVariablesToRemove.toString()})); //$NON-NLS-1$ //$NON-NLS-2$
			if (!remove) {
				return;
			}
		}
		BSFEngineDescriptor[] variables =
			(BSFEngineDescriptor[]) variablesToRemove.toArray(
				new BSFEngineDescriptor[0]);
		engineDescContentProvider.removeDescriptors(variables);
		engineDescTable.refresh();
	}

	/**
	 * Responds to a selection changed event in the engine descriptor table
	 * @param event the selection change event
	 */
	protected void handleTableSelectionChanged(SelectionChangedEvent event) {
		int size = ((IStructuredSelection) event.getSelection()).size();
		envEditButton.setEnabled(size == 1);
		envRemoveButton.setEnabled(size > 0);
	}

	/* (non-Javadoc)
	 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
	 */
	public void init(IWorkbench workbench) {
	}

	/**
	 * Clear the variables.
	 */
	protected void performDefaults() {
		engineDescContentProvider.discardChanges();
		engineDescTable.refresh();
		super.performDefaults();

	}

	/**
	 * Sets the saved state for reversion.
	 */
	public boolean performOk() {
		engineDescContentProvider.saveChanges();
		storeBSFPreferences();

		return super.performOk();
	}


	static public void loadBSFPreferences() {
		Flow4JBSFManager bsfManager = Flow4JBSFManager.getInstance();
		IPreferenceStore prefStore =
			Flow4JPlugin.getDefault().getPreferenceStore();
		String languages = prefStore.getString("pref_bsf_languages");
		if (languages == null  || languages.trim().length() == 0)
			return;
		StringTokenizer st = new StringTokenizer(languages, ",");
		while (st.hasMoreTokens()) {
			String lang = st.nextToken();
			bsfManager.addEngineDescriptor(bsfManager.newEngineDescriptor(lang, prefStore.getString("pref_bsf_engineclass_"+lang), prefStore.getString("pref_bsf_extensions_"+lang)));
		}
		
	}




	public void storeBSFPreferences() {
		Flow4JBSFManager bsfManager = Flow4JBSFManager.getInstance();
		IPreferenceStore prefStore =
			Flow4JPlugin.getDefault().getPreferenceStore();
		StringBuffer userLanguages = new StringBuffer();

		int len = bsfManager.getEngineDescriptors().length;
		for (int i = 0; i < len; i++) {
			BSFEngineDescriptor desc = bsfManager.getEngineDescriptors()[i];
			String lang = desc.getLanguage();
			if (desc.isUpdated()  || (! bsfManager.isBuiltInEngine(desc.getLanguage()))) {
				prefStore.setValue("pref_bsf_engineclass_"+lang, desc.getEngineClassName());
				prefStore.setValue("pref_bsf_extensions_"+lang, desc.getExtensionsStr());
				userLanguages.append(lang).append(
					i<len-1 ? "," : "");
			}
			prefStore.setValue("pref_bsf_languages", userLanguages.toString());
		}
	}






	private Flow4JBSFManager getBSFManager() {
		return Flow4JBSFManager.getInstance();
	}

	private class SimpleEngineDescContentProvider
		implements IStructuredContentProvider {
		/**
		 * The content provider stores a copy of the engine dscriptors for use during editing.
		 * The edited engine dscriptors are saved to the launch manager when saveChanges()
		 * is called.
		 */
		private List engineDescriptors = new ArrayList();

		public Object[] getElements(Object inputElement) {
			return engineDescriptors.toArray();
		}

		/**
		 * Removes the given engine descriptors from the 'copied list'
		 * 
		 * @param variables variables to remove
		 */
		public void removeDescriptors(BSFEngineDescriptor[] descs) {
			for (int i = 0; i < descs.length; i++) {
				engineDescriptors.remove(descs[i]);
			}
		}

		/**
		 * Adds the given variables to the 'copied list'
		 * 
		 * @param variables variables to add
		 */
		public void addVariables(BSFEngineDescriptor[] variables) {
			for (int i = 0; i < variables.length; i++) {
				engineDescriptors.add(variables[i]);
			}
		}

		public void dispose() {
		}

		public void inputChanged(
			Viewer viewer,
			Object oldInput,
			Object newInput) {
			if (newInput == null || !(newInput instanceof Flow4JBSFManager)) {
				return;
			}
			discardChanges();
		}

		/**
		 * Saves the edited engine descriptor state to the BSF manager.
		 */
		public void saveChanges() {
			Flow4JBSFManager manager = getBSFManager();
			manager.removeEngineDescriptors(manager.getEngineDescriptors());
			//			try {
			manager.addEngineDescriptors(
				(BSFEngineDescriptor[]) engineDescriptors.toArray(
					new BSFEngineDescriptor[0]));
			//			} catch (CoreException e) {
			//				Flow4JPlugin.message(e.getStatus().getMessage());
			//DebugUIPlugin.errorDialog(getShell(), DebugPreferencesMessages.getString("StringVariablePreferencePage.24"), DebugPreferencesMessages.getString("StringVariablePreferencePage.25"), e.getStatus()); //$NON-NLS-1$ //$NON-NLS-2$
			//			}
		}

		/**
		 * Re-initializes to the variables currently stored in the manager.
		 */
		public void discardChanges() {
			Flow4JBSFManager manager = getBSFManager();
			BSFEngineDescriptor[] variables = manager.getEngineDescriptors();
			for (int i = 0; i < variables.length; i++) {
				BSFEngineDescriptor desc = variables[i];
				BSFEngineDescriptor copy =
					manager.newEngineDescriptor(
						desc.getLanguage(),
						desc.getEngineClassName(),
						desc.getExtensions());
				engineDescriptors.add(copy);
			}
		}

		/**
		 * Returns the 'working set' of variables
		 * 
		 * @return the working set of variables (not yet saved)
		 */
		public List getVariables() {
			return engineDescriptors;
		}
	}

	private class SimpleVariableLabelProvider
		extends LabelProvider
		implements ITableLabelProvider, IColorProvider {
		public Image getColumnImage(Object element, int columnIndex) {
			return null;
		}
		public String getColumnText(Object element, int columnIndex) {
			if (element instanceof BSFEngineDescriptor) {
				BSFEngineDescriptor desc = (BSFEngineDescriptor) element;
				switch (columnIndex) {
					case 0 :
						return desc.getLanguage();
					case 1 :
						return desc.getEngineClassName();
					case 2 :
						return desc.getExtensionsStr();
				}
			}

			return null;
		}
		public Color getForeground(Object element) {
			return null;
		}
		public Color getBackground(Object element) {
			/*			if (element instanceof IValueVariable) {
							if (((IValueVariable) element).isContributed()) {
								Display display = Display.getCurrent();
								return display.getSystemColor(SWT.COLOR_INFO_BACKGROUND);
							}
						}
						*/
			return null;
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -