// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package com.amalto.workbench.dialogs; import java.util.ArrayList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.TextViewer; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import com.amalto.workbench.i18n.Messages; import com.amalto.workbench.image.ImageCache; public class TextViewDialog extends Dialog { private static Log log = LogFactory.getLog(TextViewDialog.class); private final static int BUTTON_CLOSE = 10; protected String text; protected TextViewer textViewer; /** * @param parentShell */ public TextViewDialog(Shell parentShell, String text) { super(parentShell); this.text = text; } protected Control createDialogArea(Composite parent) { try { // Should not really be here but well,.... parent.getShell().setText(Messages.TextViewDialog_TextView); Composite composite = (Composite) super.createDialogArea(parent); GridLayout layout = (GridLayout) composite.getLayout(); layout.numColumns = 1; textViewer = new TextViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); textViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); ((GridData) textViewer.getControl().getLayoutData()).heightHint = 250; ((GridData) textViewer.getControl().getLayoutData()).widthHint = 250; textViewer.setEditable(false); Document doc = new Document(text); textViewer.setDocument(doc); return composite; } catch (Exception e) { log.error(e.getMessage(), e); MessageDialog.openError(this.getShell(), Messages._Error, Messages.TextViewDialog_ErrorMsg + e.getLocalizedMessage()); return null; } } protected void createButtonsForButtonBar(Composite parent) { createButton(parent, BUTTON_CLOSE, Messages.Close, false); } protected void buttonPressed(int buttonId) { switch (buttonId) { case BUTTON_CLOSE: this.close(); } } /** * DOM Tree Content Provider * * @author bgrieder * */ class DOMTreeContentProvider implements IStructuredContentProvider, ITreeContentProvider { public DOMTreeContentProvider() { } public void inputChanged(Viewer v, Object oldInput, Object newInput) { } public void dispose() { } public Object[] getElements(Object parent) { return getChildren(parent); } public Object getParent(Object child) { // if (child instanceof Element) { return ((Element) child).getParentNode(); // } // return null; } public Object[] getChildren(Object parent) { NodeList nl = ((Element) parent).getChildNodes(); ArrayList<Element> list = new ArrayList<Element>(); for (int i = 0; i < nl.getLength(); i++) { if (nl.item(i) instanceof Element) list.add((Element) nl.item(i)); } if (list.size() == 0) return null; else return list.toArray(new Element[list.size()]); } public boolean hasChildren(Object parent) { if (parent instanceof Element) return ((Element) parent).getChildNodes().getLength() > 1; return false; } } /** * DOM Tree Label Provider * * @author bgrieder * */ class DOMTreeLabelProvider extends LabelProvider { public String getText(Object obj) { if (obj instanceof Element) { Element e = (Element) obj; if (((Element) obj).getChildNodes().getLength() > 1) return e.getLocalName(); else return e.getLocalName() + ": " + e.getTextContent();//$NON-NLS-1$ } return "?? " + obj.getClass().getName() + " : " + obj.toString();//$NON-NLS-1$//$NON-NLS-2$ } public Image getImage(Object obj) { if (obj instanceof Element) { if (((Element) obj).getChildNodes().getLength() > 1) return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER); else return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT); } return ImageCache.getImage("icons/small_warn.gif").createImage();//$NON-NLS-1$ // return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT); } }// Class DOM Tree Label Provider }