diff options
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/section/LocaleConfigSection.java')
-rw-r--r-- | jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/section/LocaleConfigSection.java | 421 |
1 files changed, 0 insertions, 421 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/section/LocaleConfigSection.java b/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/section/LocaleConfigSection.java deleted file mode 100644 index 3ac917a82..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.facesconfig.ui/src/org/eclipse/jst/jsf/facesconfig/ui/section/LocaleConfigSection.java +++ /dev/null @@ -1,421 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 Sybase, Inc. and others. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.facesconfig.ui.section; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.emf.common.command.Command; -import org.eclipse.emf.common.command.CompoundCommand; -import org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.impl.AdapterImpl; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.emf.edit.command.AddCommand; -import org.eclipse.emf.edit.command.RemoveCommand; -import org.eclipse.emf.edit.command.SetCommand; -import org.eclipse.jface.viewers.CheckStateChangedEvent; -import org.eclipse.jface.viewers.CheckboxTableViewer; -import org.eclipse.jface.viewers.ICheckStateListener; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.jface.viewers.ViewerSorter; -import org.eclipse.jst.jsf.facesconfig.emf.ApplicationType; -import org.eclipse.jst.jsf.facesconfig.emf.DefaultLocaleType; -import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigFactory; -import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigPackage; -import org.eclipse.jst.jsf.facesconfig.emf.LocaleConfigType; -import org.eclipse.jst.jsf.facesconfig.emf.SupportedLocaleType; -import org.eclipse.jst.jsf.facesconfig.ui.dialog.DialogUtil; -import org.eclipse.jst.jsf.facesconfig.ui.page.IFacesConfigPage; -import org.eclipse.jst.jsf.facesconfig.ui.page.OthersPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.forms.IManagedForm; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * @author Zhi-peng Zhang, sfshi - * @version - */ -public class LocaleConfigSection extends ApplicationSection implements - ICheckStateListener { - private LocaleConfigAdapter _localeConfigAdapter; - - /** - * - * @param componentClass - * @param parent - * @param managedForm - * @param page - * @param toolkit - * @param helpContextId - * @param helpTooltip - */ - public LocaleConfigSection(EClass componentClass, Composite parent, - IManagedForm managedForm, IFacesConfigPage page, - FormToolkit toolkit, String helpContextId, String helpTooltip) { - super(componentClass, parent, managedForm, page, toolkit, - helpContextId, helpTooltip); - } - - /** - * - * @param componentClass - * @param parent - * @param managedForm - * @param page - * @param toolkit - */ - public LocaleConfigSection(EClass componentClass, Composite parent, - IManagedForm managedForm, IFacesConfigPage page, FormToolkit toolkit) { - this(componentClass, parent, managedForm, page, toolkit, null, null); - } - - public void dispose() { - ((CheckboxTableViewer)tableViewer).removeCheckStateListener(this); - super.dispose(); - } - /** - * create a CheckboxTableViewer for this section. - */ - protected TableViewer createTableViewer(Composite parent) { - CheckboxTableViewer tableViewer1 = CheckboxTableViewer.newCheckList( - parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); - tableViewer1.addCheckStateListener(this); - tableViewer1.setSorter(new ViewerSorter()); - return tableViewer1; - } - - /** - * Add a filter for this table viewer, only <supported-locale> and - * <default-locale> elements would be listed. - */ - protected void configTableViewer(TableViewer tableViewer1) { - tableViewer1.addFilter(new ViewerFilter() { - public boolean select(Viewer viewer, Object parentElement, - Object element) { - return FacesConfigPackage.eINSTANCE.getSupportedLocaleType() - .isInstance(element) - || FacesConfigPackage.eINSTANCE.getDefaultLocaleType() - .isInstance(element); - } - }); - } - - /** - * Pop up a dialog for user to select a locale string, then create a - * <supported-locale> element with the string as value. - * - * @return the supported locale object - */ - public SupportedLocaleType createSupportedLocaleObject() { - ArrayList locales = new ArrayList(); - - /** - * Compute the locales that already declared in this <locale-config> - * element. If user select a locale that already declared, then a - * warning message will be shown in the dialog. - */ - - if (getInput() instanceof ApplicationType - && ((ApplicationType) getInput()).getLocaleConfig().size() > 0) { - LocaleConfigType localeConfigType = (LocaleConfigType) ((ApplicationType) getInput()) - .getLocaleConfig().get(0); - if (localeConfigType.getDefaultLocale() != null) { - String locale = localeConfigType.getDefaultLocale() - .getTextContent(); - if (locale != null) { - locales.add(locale); - } - } - List list = localeConfigType.getSupportedLocale(); - for (int i = 0, n = list.size(); i < n; i++) { - String locale = ((SupportedLocaleType) list.get(i)) - .getTextContent(); - if (locale != null) { - locales.add(locale); - } - } - } - String result = DialogUtil.openLocaleDialog(getSection().getShell(), - locales); - if (result != null) { - SupportedLocaleType component = FacesConfigFactory.eINSTANCE - .createSupportedLocaleType(); - component.setTextContent(result); - return component; - } - return null; - } - - /** - * When user click "Add" button on this section, pop up a dialog to create a - * <supported-locale> element, then add it onto <locale-config> element, if - * the <locale-config> or <application> doesn't exist, create them together. - */ - void addButtonSelected(SelectionEvent e) { - SupportedLocaleType obj = createSupportedLocaleObject(); - if (obj != null) { - - boolean needRefreshAll = false; - Command command = null; - - if (getInput() instanceof ApplicationType) { - /** the <application> element exists. */ - ApplicationType application = (ApplicationType) getInput(); - if (application.getLocaleConfig().size() > 0) { - /** the <locale-config> element exists. */ - LocaleConfigType localeConfig = (LocaleConfigType) application - .getLocaleConfig().get(0); - command = AddCommand.create(this.getEditingDomain(), - localeConfig, null, obj); - } else { - /** the <locale-config> element doesn't exist, create it. */ - LocaleConfigType localeConfig = FacesConfigFactory.eINSTANCE - .createLocaleConfigType(); - localeConfig.getSupportedLocale().add(obj); - command = AddCommand.create(getEditingDomain(), - application, null, localeConfig); - } - } else { - /** - * the <application> element doesn't exist, then create it, - * after execute, reset the input for all the application - * sections. - */ - needRefreshAll = true; - ApplicationType application = FacesConfigFactory.eINSTANCE - .createApplicationType(); - LocaleConfigType localeConfig = FacesConfigFactory.eINSTANCE - .createLocaleConfigType(); - localeConfig.getSupportedLocale().add(obj); - application.getLocaleConfig().add(localeConfig); - command = AddCommand.create(getEditingDomain(), this.getPage() - .getInput(), null, application); - } - - if (command.canExecute()) { - getEditingDomain().getCommandStack().execute(command); - if (needRefreshAll) - /** reset input for all the application sections. */ - ((OthersPage) this.getPage()).resetApplicationInput(); - } - } - - } - - /** - * when user click on the CheckboxTableViewer, perform some actions to - * set/unset <default-locale> and <supported-locale> elements. - * - * If an item is selected, that means it's a <default-locale>, otherwise - * it's a <supported-locale>. - * - * @see org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged(org.eclipse.jface.viewers.CheckStateChangedEvent) - */ - public void checkStateChanged(CheckStateChangedEvent event) { - boolean checked = event.getChecked(); - - if (event.getElement() == null) { - return; - } - - EObject node = (EObject) event.getElement(); - LocaleConfigType localeConfigType = (LocaleConfigType) ((ApplicationType) getInput()) - .getLocaleConfig().get(0); - CompoundCommand compoundCommand = new CompoundCommand(); - - if (checked) { - /** user checked one item, going to set it as <default-locale>. */ - if (localeConfigType.getDefaultLocale() != null) { - /** - * Change the <default-locale> value to <supported-locale>. - */ - Command command = RemoveCommand.create(getEditingDomain(), - localeConfigType, null, localeConfigType - .getDefaultLocale()); - - compoundCommand.append(command); - - SupportedLocaleType supportedLocale = FacesConfigFactory.eINSTANCE - .createSupportedLocaleType(); - supportedLocale.setTextContent(localeConfigType - .getDefaultLocale().getTextContent()); - command = AddCommand.create(getEditingDomain(), - localeConfigType, FacesConfigPackage.eINSTANCE - .getLocaleConfigType_SupportedLocale(), - supportedLocale); - compoundCommand.append(command); - } - - /** - * Change the selected item from <supported-locale> to - * <default-locale> - */ - SupportedLocaleType supportedLocale = (SupportedLocaleType) node; - Command command = RemoveCommand.create(getEditingDomain(), - localeConfigType, FacesConfigPackage.eINSTANCE - .getLocaleConfigType_SupportedLocale(), - supportedLocale); - compoundCommand.append(command); - - DefaultLocaleType defaultLocale = FacesConfigFactory.eINSTANCE - .createDefaultLocaleType(); - defaultLocale.setTextContent(supportedLocale.getTextContent()); - command = SetCommand - .create(getEditingDomain(), localeConfigType, - FacesConfigPackage.eINSTANCE - .getLocaleConfigType_DefaultLocale(), - defaultLocale); - compoundCommand.append(command); - - } else { - /** - * User unchecked one item, going to change it from <default-locale> - * to <supported-locale>. - */ - DefaultLocaleType defaultLocale = (DefaultLocaleType) node; - Command command = RemoveCommand.create(getEditingDomain(), - localeConfigType, null, defaultLocale); - compoundCommand.append(command); - - SupportedLocaleType supportedLocale = FacesConfigFactory.eINSTANCE - .createSupportedLocaleType(); - supportedLocale.setTextContent(defaultLocale.getTextContent()); - command = AddCommand.create(getEditingDomain(), localeConfigType, - null, supportedLocale); - compoundCommand.append(command); - } - - if (compoundCommand.canExecute()) { - getEditingDomain().getCommandStack().execute(compoundCommand); - this.refresh(); - setTableViewerCheckedState(); - } - } - - /** - * Set the checked state for items in the checkbox table viewer. This method - * could be used for refresh the checked state of the table viewer. - */ - private void setTableViewerCheckedState() { - if (getInput() instanceof ApplicationType) { - ApplicationType application = (ApplicationType) getInput(); - if (application.getLocaleConfig().size() > 0) { - - LocaleConfigType localeConfigType = (LocaleConfigType) application - .getLocaleConfig().get(0); - if (localeConfigType.getDefaultLocale() != null) { - ((CheckboxTableViewer) getTableViewer()).setChecked( - localeConfigType.getDefaultLocale(), true); - } - } - } - } - - @Override - protected void addAdaptersOntoInput(Object input) { - super.addAdaptersOntoInput(input); - if (input != null && input instanceof ApplicationType) { - ApplicationType application = (ApplicationType) input; - if (EcoreUtil.getExistingAdapter(application, - LocaleConfigSection.class) == null) { - application.eAdapters().add(getLocaleConfigAdapter()); - } - } - } - - private Adapter getLocaleConfigAdapter() { - if (_localeConfigAdapter == null) { - _localeConfigAdapter = new LocaleConfigAdapter(); - } - return _localeConfigAdapter; - } - - @Override - protected void removeAdaptersFromInput(Object input) { - if (input != null && input instanceof ApplicationType && _localeConfigAdapter != null) { - ApplicationType application = (ApplicationType) input; - application.eAdapters().remove(_localeConfigAdapter); - } - super.removeAdaptersFromInput(input); - } - - /** - * set the structuredViewer's input. Set the first LocaleConfig as input. - * - * @param input - */ - protected void setViewerInput(Object input) { - if (input instanceof ApplicationType) { - ApplicationType application = (ApplicationType) input; - if (application.getLocaleConfig().size() > 0) { - tableViewer.setInput(application.getLocaleConfig().get(0)); - } else - tableViewer.setInput(null); - } else - tableViewer.setInput(null); - - } - - public void refreshAll() { - super.refreshAll(); - setTableViewerCheckedState(); - } - - /** - * A listener that is be adapted on the input <application> element, to - * listen the event that the first <locale-config> being created and - * removed, then reset the input of the tabel viewer. - * - * @author sfshi - * - */ - class LocaleConfigAdapter extends AdapterImpl { - public boolean isAdapterForType(Object type) { - if (type == LocaleConfigSection.class) - return true; - return false; - } - - public void notifyChanged(Notification msg) { - if (msg.getEventType() == Notification.ADD - || msg.getEventType() == Notification.REMOVE) { - if (msg.getFeature() == FacesConfigPackage.eINSTANCE - .getApplicationType_LocaleConfig()) { - /** - * a <locale-config> was created or removed, notify this - * section to reset it's input. - */ - - if (Thread.currentThread() == PlatformUI.getWorkbench().getDisplay().getThread()) { - setInput(getInput()); - } else { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - setInput(getInput()); - } - }); - } - - } - } - } - - } -} |