/*******************************************************************************
* Copyright © 2009, 2013 IBM 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:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.ide.deployment.rui.internal.editor;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.core.resources.IProject;
import org.eclipse.edt.ide.core.model.EGLCore;
import org.eclipse.edt.ide.core.model.EGLModelException;
import org.eclipse.edt.ide.core.model.IEGLProject;
import org.eclipse.edt.ide.deployment.core.IDeploymentConstants;
import org.eclipse.edt.ide.deployment.internal.Logger;
import org.eclipse.edt.ide.deployment.internal.nls.Messages;
import org.eclipse.edt.ide.deployment.rui.internal.HelpContextIDs;
import org.eclipse.edt.ide.deployment.rui.internal.editor.RUIFormPage.RUIHandlerRowItem;
import org.eclipse.edt.ide.ui.internal.deployment.DeploymentFactory;
import org.eclipse.edt.ide.ui.internal.deployment.EGLDeploymentRoot;
import org.eclipse.edt.ide.ui.internal.deployment.Parameters;
import org.eclipse.edt.ide.ui.internal.deployment.RUIApplication;
import org.eclipse.edt.ide.ui.internal.deployment.RUIHandler;
import org.eclipse.edt.ide.ui.internal.deployment.ui.DeploymentUtilities;
import org.eclipse.edt.ide.ui.internal.deployment.ui.EGLDDBaseFormPage;
import org.eclipse.edt.ide.ui.internal.deployment.ui.EGLDDRootHelper;
import org.eclipse.edt.ide.ui.internal.deployment.ui.IEGLDDContributionPageProvider;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.widgets.FormToolkit;
public class RUIFormPageProvider implements IEGLDDContributionPageProvider
{
public static final String PAGE_ID = "page.eglbind.rui"; //$NON-NLS-1$
public EGLDDBaseFormPage createPage( FormEditor editor )
{
return new RUIFormPage( editor, PAGE_ID, Messages.editor_title );
}
public Table createTable( Composite client, FormToolkit toolkit )
{
return RUIFormPage.createRUIHandlerTableControl( toolkit, client, false );
}
public IContentProvider getTableContentProvider( IProject project )
{
return new RUIHandlerOverviewContentProvider( project );
}
public ILabelProvider getTableLabelProvider()
{
return new RUIFormPage.RUIHandlerLabelProvider();
}
public String getOverviewTitle()
{
return Messages.editor_master_page_title;
}
public String getOverviewDescription()
{
return Messages.editor_master_page_desc;
}
public String getTargetReferenceTitle()
{
return Messages.target_detail_page_rui_section_title;
}
public String getTargetReferenceDescription()
{
return Messages.target_detail_page_rui_section_desc;
}
public String getDetailPageId()
{
return PAGE_ID;
}
public String getHelpId()
{
return HelpContextIDs.RUI_DD_EDITOR_OVERVIEW_PAGE;
}
private static class RUIHandlerOverviewContentProvider implements IStructuredContentProvider
{
private IEGLProject project;
public RUIHandlerOverviewContentProvider( IProject project )
{
this.project = EGLCore.create( project );
}
/**
* Display only the selected handlers.
*/
public Object[] getElements( Object inputElement )
{
List children = new ArrayList();
if ( inputElement instanceof EGLDeploymentRoot )
{
EGLDeploymentRoot root = (EGLDeploymentRoot)inputElement;
try
{
RUIApplication application = root.getDeployment().getRuiapplication();
boolean displayAll = application == null || application.isDeployAllHandlers();
int i = 0;
if ( displayAll )
{
Map map = DeploymentUtilities.getAllRUIHandlersInProject( project );
DeploymentFactory factory = DeploymentFactory.eINSTANCE;
for ( Iterator it = map.entrySet().iterator(); it.hasNext(); )
{
Map.Entry next = (Map.Entry)it.next();
String impl = (String)next.getKey();
RUIHandler handler = factory.createRUIHandler();
handler.setEnableGeneration( true );
handler.setImplementation( impl );
Parameters parms = factory.createParameters();
EGLDDRootHelper.addOrUpdateParameter( parms, IDeploymentConstants.PARAMETER_HTML_FILE_NAME, (String)next.getValue() );
handler.setParameters( parms );
RUIHandlerRowItem row = new RUIHandlerRowItem( handler, i );
children.add( row );
i++;
}
}
else
{
for ( Iterator it = application.getRuihandler().iterator(); it.hasNext(); )
{
RUIHandler nextHandler = (RUIHandler)it.next();
if ( nextHandler.isEnableGeneration() && project.findPart( nextHandler.getImplementation() ) != null )
{
RUIHandlerRowItem row = new RUIHandlerRowItem( nextHandler, i );
children.add( row );
i++;
}
}
}
}
catch ( EGLModelException e )
{
e.printStackTrace();
Logger.logException( e );
}
}
return children.toArray();
}
public void dispose() {}
public void inputChanged( Viewer viewer, Object oldInput, Object newInput ) {}
}
}