diff options
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/DTJSFViewModel.java')
-rw-r--r-- | jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/DTJSFViewModel.java | 255 |
1 files changed, 0 insertions, 255 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/DTJSFViewModel.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/DTJSFViewModel.java deleted file mode 100644 index a39d44598..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/component/DTJSFViewModel.java +++ /dev/null @@ -1,255 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 Oracle Corporation 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.ui.internal.component; - -import java.util.concurrent.atomic.AtomicBoolean; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.IJobChangeEvent; -import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.core.runtime.jobs.JobChangeAdapter; -import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory; -import org.eclipse.jst.jsf.context.resolver.structureddocument.IWorkspaceContextResolver; -import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext; -import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory; -import org.eclipse.jst.jsf.designtime.DTAppManagerUtil; -import org.eclipse.jst.jsf.designtime.DesignTimeApplicationManager; -import org.eclipse.jst.jsf.designtime.context.DTFacesContext; -import org.eclipse.jst.jsf.designtime.internal.view.DTUIViewRoot; -import org.eclipse.jst.jsf.designtime.internal.view.IDTViewHandler; -import org.eclipse.jst.jsf.designtime.internal.view.IViewRootHandle; -import org.eclipse.jst.jsf.designtime.internal.view.DTUIViewRoot.StalenessEvent; -import org.eclipse.jst.jsf.designtime.internal.view.DTUIViewRoot.StalenessListener; -import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument; - -/** - * The top-level input model for a design time component tree - * - * @author cbateman - * - */ -/* package */class DTJSFViewModel -{ - private final IStructuredDocument _document; - private final IProject _project; - private final IFile _file; - private final IStructuredDocumentContext _context; - private final AtomicBoolean _alreadyUpdating = new AtomicBoolean( - false); - private Runnable _runnable; - private final IViewRootHandle _viewRootHandle; - private StalenessListener _stalenessListener; - - /** - * @param document - * @throws IllegalArgumentException - * if document cannot be used to initialize a component tree. - */ - public DTJSFViewModel(final IStructuredDocument document) - { - _document = document; - _context = IStructuredDocumentContextFactory.INSTANCE.getContext( - _document, -1); - - final IWorkspaceContextResolver resolver = IStructuredDocumentContextResolverFactory.INSTANCE - .getWorkspaceContextResolver(_context); - - if (resolver == null) - { - throw new IllegalArgumentException(); - } - - _project = resolver.getProject(); - _file = (IFile) resolver.getResource(); - - if (_project == null || _file == null) - { - throw new IllegalArgumentException(); - } - - final DTFacesContext facesContext = getFacesContext(); - _viewRootHandle = facesContext.getViewRootHandle(); - } - - /** - * Acquire and initialize the component tree root for the document - * - * @param runnable - */ - public void init(final Runnable runnable) - { - _runnable = runnable; - _viewRootHandle.addListener(getOrCreateListener()); - } - - public void dispose() - { - if (_stalenessListener != null) - { - _viewRootHandle.removeListener(_stalenessListener); - } - - synchronized(this) - { - _runnable = null; - } - } - - /** - * @return the structured document that this view model was created for. - */ - public final IStructuredDocument getDocument() - { - return _document; - } - - public final IProject getProject() - { - return _project; - } - - public final String getViewId() - { - final DTFacesContext facesContext = getFacesContext(); - final IDTViewHandler viewHandler = DTAppManagerUtil - .getViewHandler(_project); - if (facesContext != null && viewHandler != null) - { - return viewHandler.getViewId(facesContext, _file); - } - return null; - } - - private DTFacesContext getFacesContext() - { - final DesignTimeApplicationManager manager = DesignTimeApplicationManager - .getInstance(_project); - - if (manager != null) - { - return manager.getFacesContext(_file); - } - return null; - } - - public void update() - { - final DTFacesContext facesContext = getFacesContext(); - - if (facesContext != null) - { - // latch the alreadyRunning flag; job will unset to false - if (_alreadyUpdating.compareAndSet(false, true)) - { - final Job job = new UpdateRootAndRefreshJob(_viewRootHandle); - - job.addJobChangeListener(new JobChangeAdapter() - { - @Override - public void done(final IJobChangeEvent event) - { - // always reset the updating flag - _alreadyUpdating.set(false); - if (event.getResult().isOK()) - { - synchronized(DTJSFViewModel.this) - { - if (_runnable != null) - { - _runnable.run(); - } - } - } - } - }); - - job.schedule(); - } - } - } - - /** - * @return the design time view root or null - */ - public DTUIViewRoot getRoot() - { - final DTFacesContext facesContext = getFacesContext(); - - if (facesContext != null) - { - final DTUIViewRoot viewRoot = _viewRootHandle.getCachedViewRoot(); - - // if our copy is uninit or null, kick off an update - if (viewRoot == null || viewRoot.isStale()) - { - update(); - } - - return viewRoot; - } - return null; - } - - private StalenessListener getOrCreateListener() - { - if (_stalenessListener == null) - { - _stalenessListener = new StalenessListener() - { - @Override - protected void stalenessChanged(StalenessEvent event) - { - switch (event.getChangeType()) - { - case VIEW_DEFN_CHANGED: - case PROJECT_CLEANED: - { - update(); - } - case VIEW_DEFN_DELETED: - case VIEW_DEFN_PROJECT_CLOSED: - { - DTUIViewRoot root = _viewRootHandle - .getCachedViewRoot(); - if (root != null) - { - root.removeListener(_stalenessListener); - } - } - } - } - }; - } - return _stalenessListener; - } - - private static class UpdateRootAndRefreshJob extends Job - { - private final IViewRootHandle _viewRootHandle; - - public UpdateRootAndRefreshJob(final IViewRootHandle viewRootHandle) - { - super(Messages.DTJSFViewModel_JobDesc); - _viewRootHandle = viewRootHandle; - } - - @Override - protected IStatus run(final IProgressMonitor monitor) - { - _viewRootHandle.updateViewRoot(); - return Status.OK_STATUS; - } - } -} |