blob: 7e766e9ec080c4c339a8dee944f39f7859442610 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 EclipseSource 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:
* Holger Staudacher - initial API and implementation
* Artur Kronenberg - Fixed bug 322091
*******************************************************************************/
package org.eclipse.libra.warproducts.ui.editor;
import org.eclipse.jface.viewers.*;
import org.eclipse.pde.internal.core.text.plugin.DocumentGenericNode;
import org.eclipse.pde.internal.ui.*;
import org.eclipse.pde.internal.ui.editor.PDEFormEditor;
import org.eclipse.pde.internal.ui.editor.XMLSourcePage;
import org.eclipse.swt.graphics.Image;
public class WebXMLSourcePage extends XMLSourcePage {
private ITreeContentProvider contentProvider;
private ILabelProvider labelProvider;
public WebXMLSourcePage( final PDEFormEditor editor,
final String id,
final String title )
{
super( editor, id, title );
}
public boolean isQuickOutlineEnabled() {
return true;
}
public ILabelProvider createOutlineLabelProvider() {
if( labelProvider == null ) {
labelProvider = new WebXmlLabelProvider();
}
return labelProvider;
}
public ITreeContentProvider createOutlineContentProvider() {
if( contentProvider == null ) {
contentProvider = new WebXmlContentProvider();
}
return contentProvider;
}
public ViewerComparator createOutlineComparator() {
return new ViewerComparator();
}
public void updateSelection( final Object object ) {
if( object instanceof DocumentGenericNode ) {
DocumentGenericNode node = ( DocumentGenericNode )object;
selectAndReveal( node.getOffset(), node.getLength() );
}
}
private static final class WebXmlLabelProvider extends LabelProvider {
private PDELabelProvider pdeLabelProvider = PDEPlugin.getDefault()
.getLabelProvider();
public String getText( final Object element ) {
String result = "";//$NON-NLS-1$
if( element instanceof DocumentGenericNode ) {
DocumentGenericNode node = ( DocumentGenericNode )element;
result = node.getXMLTagName();
} else {
result = super.getText( element );
}
return result;
}
public Image getImage( final Object element ) {
Image result = null;
if( element instanceof DocumentGenericNode ) {
result = pdeLabelProvider.get( PDEPluginImages.DESC_XML_ELEMENT_OBJ );
}
return result;
}
}
private static class WebXmlContentProvider implements ITreeContentProvider
{
public Object[] getElements( final Object inputElement ) {
Object[] result = new Object[ 0 ];
if( inputElement instanceof WebXMLModel ) {
WebXMLModel model = ( WebXMLModel )inputElement;
Object documentRoot = model.getDocumentRoot();
result = new Object[ 1 ];
result[ 0 ] = documentRoot;
}
return result;
}
public Object[] getChildren( final Object element ) {
Object[] result = new Object[ 0 ];
if( element instanceof DocumentGenericNode ) {
DocumentGenericNode node = ( DocumentGenericNode )element;
result = node.getChildNodes();
}
return result;
}
public Object getParent( final Object element ) {
Object result = null;
if( element instanceof DocumentGenericNode ) {
DocumentGenericNode node = ( DocumentGenericNode )element;
result = node.getParentNode();
}
return result;
}
public boolean hasChildren( final Object element ) {
return getChildren( element ).length > 0;
}
}
}