| /******************************************************************************* |
| * 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; |
| } |
| } |
| } |