| /******************************************************************************* |
| * Copyright (c) 2006, 2008 Oracle Corporation. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: Oracle |
| *******************************************************************************/ |
| package org.eclipse.jst.jsf.core.internal.jsflibraryconfig; |
| |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| import org.eclipse.jst.jsf.core.internal.Messages; |
| |
| /** |
| * Model for the custom control <b>JSFLibraryConfigControl</b>. |
| * A JSFLibraryConfigModel object is initialized from a source and updated with |
| * selected implementation and component libraries when selections are changed. |
| * |
| * @author Justin Chen - Oracle |
| * @deprecated |
| */ |
| public class JSFLibraryConfigModel { |
| final private JSFLibraryConfigDialogSettingData data; |
| final private JSFLibraryRegistryUtil jsfLibReg; |
| private List colJSFCompLib; |
| |
| /** |
| * Private constructor. |
| * @param data |
| */ |
| private JSFLibraryConfigModel(JSFLibraryConfigDialogSettingData data) { |
| this.data = data; |
| this.jsfLibReg = JSFLibraryRegistryUtil.getInstance(); |
| } |
| |
| /** |
| * Return JSF component libraries. |
| * |
| * This list is initialized from JSF library registry and updated with persistent |
| * configuration data. |
| * |
| * @return List |
| * see also org.eclipse.jst.jsf.ui.properties.IJSFLibraryDecoratorProvider#getProjectJSFComponentLibraries() |
| */ |
| public List getJSFComponentLibraries() { |
| if (colJSFCompLib == null) { |
| /* To initialize a component library list from registry and then |
| * update list with saved component libraries. |
| */ |
| colJSFCompLib = jsfLibReg.getJSFComponentLibraries(); |
| Iterator it = data.getJSFComponentLibraries().iterator(); |
| JSFLibraryInternalReference targetItem = null; |
| JSFLibraryInternalReference srcItem = null; |
| while (it.hasNext()) { |
| targetItem = (JSFLibraryInternalReference) it.next(); |
| srcItem = jsfLibReg.getJSFLibraryReferencebyID(targetItem.getID()); |
| if (srcItem != null) { |
| srcItem.setSelected(true); |
| srcItem.setToBeDeployed(targetItem.isCheckedToBeDeployed()); |
| } |
| } |
| } |
| return colJSFCompLib; |
| } |
| |
| /** |
| * Return the selected JSF component libraries currently. |
| * An empty list is returned when no component libraries are selected. |
| * |
| * @return list List |
| */ |
| public List getCurrentJSFComponentLibrarySelection() { |
| List list = new ArrayList(); |
| |
| Iterator it = getJSFComponentLibraries().iterator(); |
| JSFLibraryInternalReference crtItem = null; |
| while (it.hasNext()) { |
| crtItem = (JSFLibraryInternalReference) it.next(); |
| if (crtItem.isSelected()) { |
| list.add(crtItem); |
| } |
| } |
| return list; |
| } |
| |
| /** |
| * Returned saved component libraries which were persisted as |
| * DialogSettings or project persistent properties. |
| * |
| * @return List |
| */ |
| public List getSavedJSFComponentLibraries() { |
| return data.getJSFComponentLibraries(); |
| } |
| |
| /** |
| * Update the JSF library component libraries selection. |
| * |
| * @param libraries List |
| */ |
| public void setCurrentJSFComponentLibrarySelection(final List libraries) { |
| if (libraries != null) { |
| /* Reset all item in component library list to unselect first. |
| * Then, update each item in cmponent libraries to the provided list. |
| */ |
| setJSFLibrariesSelection(getJSFComponentLibraries(), false); |
| |
| Iterator it = libraries.iterator(); |
| JSFLibraryInternalReference crtItem; |
| JSFLibraryInternalReference srcItem = null; |
| while (it.hasNext()) { |
| crtItem = (JSFLibraryInternalReference) it.next(); |
| srcItem = jsfLibReg.getJSFLibraryReferencebyID(crtItem.getID()); |
| |
| if (srcItem != null) { |
| srcItem.setSelected(true); |
| srcItem.setToBeDeployed(crtItem.isCheckedToBeDeployed()); |
| } |
| } |
| } |
| } |
| |
| /** |
| * Set selection state to given state to each libray in the collection. |
| * |
| * @param libs List |
| * @param state boolean |
| */ |
| private void setJSFLibrariesSelection(final List libs, final boolean state) { |
| Iterator it = libs.iterator(); |
| JSFLibraryInternalReference crtjsflib; |
| while (it.hasNext()) { |
| crtjsflib = (JSFLibraryInternalReference) it.next(); |
| crtjsflib.setSelected(state); |
| } |
| } |
| |
| /** |
| * Factory class to create new JSFLibraryConfigModel instances |
| */ |
| public static final class JSFLibraryConfigModelFactory { |
| /** |
| * To create a new instance of JSFLibraryConfigModel object. |
| * A NullPointerException is raised if source is null. |
| * |
| * @param source JSFLibraryConfiglModelSource |
| * @return JSFLibraryConfigModel |
| */ |
| public static JSFLibraryConfigModel createInstance(final JSFLibraryConfigDialogSettingData source) { |
| if (source == null) { |
| throw new NullPointerException(Messages.JSFLibraryConfigModel_Null_Data_Source); |
| } |
| return new JSFLibraryConfigModel(source); |
| } |
| } |
| |
| } |