Search in sources :

Example 1 with DOMExtensionItemMenuListener

use of org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.DOMExtensionItemMenuListener in project webtools.sourceediting by eclipse.

the class AbstractExtensionsSection method createContents.

public void createContents(Composite parent) {
    // TODO (cs) add assertion
    if (extensionTreeContentProvider == null)
        return;
    IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
    documentChangeNotifier = (IDocumentChangedNotifier) editor.getAdapter(IDocumentChangedNotifier.class);
    if (documentChangeNotifier != null) {
        documentChangeNotifier.addListener(internalNodeAdapter);
    }
    composite = getWidgetFactory().createFlatFormComposite(parent);
    GridLayout gridLayout = new GridLayout();
    gridLayout.marginTop = 0;
    gridLayout.marginBottom = 0;
    gridLayout.numColumns = 1;
    composite.setLayout(gridLayout);
    GridData gridData = new GridData();
    page = getWidgetFactory().createComposite(composite);
    gridLayout = new GridLayout();
    gridLayout.marginTop = 0;
    gridLayout.marginBottom = 0;
    gridLayout.numColumns = 1;
    page.setLayout(gridLayout);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.verticalAlignment = GridData.FILL;
    gridData.horizontalAlignment = GridData.FILL;
    page.setLayoutData(gridData);
    SashForm sashForm = new SashForm(page, SWT.HORIZONTAL);
    // Try to limit the initial width of the section
    int w = SWT.DEFAULT;
    try {
        IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
        // Find the width of the Tabbed Property Sheet's composite excluding the tab
        if (part instanceof PropertySheet) {
            PropertySheet sheet = (PropertySheet) part;
            if (sheet.getCurrentPage() instanceof TabbedPropertySheetPage) {
                TabbedPropertySheetPage tabbedPage = (TabbedPropertySheetPage) sheet.getCurrentPage();
                Composite targetComposite = null;
                if (tabbedPage.getControl() instanceof Composite) {
                    Composite c = (Composite) tabbedPage.getControl();
                    int length = c.getChildren().length;
                    for (int i = 0; i < length; i++) {
                        Control ctrl = c.getChildren()[i];
                        int length2 = (((Composite) ctrl).getChildren()).length;
                        for (int j = 0; j < length2; j++) {
                            if ((((Composite) ctrl).getChildren())[j] instanceof ScrolledComposite) {
                                targetComposite = (Composite) (((Composite) ctrl).getChildren())[j];
                                break;
                            }
                        }
                    }
                }
                if (targetComposite != null) {
                    // ensure scrollbars don't show
                    w = targetComposite.getSize().x - 20;
                }
            // The above can be accomplished by the following code
            // but because TabbedPropertyComposite is in an internal package, I will get a discouraged
            // access warning.
            // w = ((TabbedPropertyComposite)(tabbedPage.getControl())).getTabComposite().getSize().x;
            }
        }
    } catch (Exception e) {
        w = SWT.DEFAULT;
    }
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.verticalAlignment = GridData.FILL;
    gridData.horizontalAlignment = GridData.FILL;
    // The initial size should be set, not the widthHint, which forces the width
    // to remain constant.
    sashForm.setSize(w, SWT.DEFAULT);
    sashForm.setLayoutData(gridData);
    sashForm.setForeground(ColorConstants.white);
    sashForm.setBackground(ColorConstants.white);
    Control[] children = sashForm.getChildren();
    for (int i = 0; i < children.length; i++) {
        children[i].setVisible(false);
    }
    Composite leftContent = getWidgetFactory().createComposite(sashForm, SWT.FLAT);
    gridLayout = new GridLayout();
    gridLayout.numColumns = 1;
    leftContent.setLayout(gridLayout);
    Section section = getWidgetFactory().createSection(leftContent, SWT.FLAT | ExpandableComposite.TITLE_BAR);
    section.setText(Messages._UI_LABEL_EXTENSIONS);
    section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    Composite tableAndButtonComposite = getWidgetFactory().createComposite(leftContent, SWT.FLAT);
    tableAndButtonComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
    gridLayout = new GridLayout();
    gridLayout.numColumns = 2;
    tableAndButtonComposite.setLayout(gridLayout);
    extensionTreeViewer = new TreeViewer(tableAndButtonComposite, SWT.FLAT | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.LINE_SOLID);
    MenuManager menuManager = new MenuManager();
    extensionTreeViewer.getTree().setMenu(menuManager.createContextMenu(extensionTreeViewer.getTree()));
    menuManager.addMenuListener(new DOMExtensionItemMenuListener(extensionTreeViewer));
    gridLayout = new GridLayout();
    gridLayout.numColumns = 1;
    extensionTreeViewer.getTree().setLayout(gridLayout);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.verticalAlignment = GridData.FILL;
    gridData.horizontalAlignment = GridData.FILL;
    extensionTreeViewer.getTree().setLayoutData(gridData);
    extensionTreeViewer.setContentProvider(extensionTreeContentProvider);
    extensionTreeViewer.setLabelProvider(extensionTreeLabelProvider);
    elementSelectionChangedListener = new ElementSelectionChangedListener();
    extensionTreeViewer.addSelectionChangedListener(elementSelectionChangedListener);
    extensionTreeViewer.getTree().addMouseTrackListener(new MouseTrackAdapter() {

        public void mouseHover(org.eclipse.swt.events.MouseEvent e) {
            ISelection selection = extensionTreeViewer.getSelection();
            if (selection instanceof StructuredSelection) {
                Object obj = ((StructuredSelection) selection).getFirstElement();
                if (obj instanceof Element) {
                    Element element = (Element) obj;
                    ExtensionsSchemasRegistry registry = getExtensionsSchemasRegistry();
                    // ApplicationSpecificSchemaProperties[] properties =
                    // registry.getAllApplicationSpecificSchemaProperties();
                    // ApplicationSpecificSchemaProperties[] properties =
                    // (ApplicationSpecificSchemaProperties[])
                    // registry.getAllApplicationSpecificSchemaProperties().toArray(new
                    // ApplicationSpecificSchemaProperties[0]);
                    List properties = registry.getAllExtensionsSchemasContribution();
                    int length = properties.size();
                    for (int i = 0; i < length; i++) {
                        SpecificationForExtensionsSchema current = (SpecificationForExtensionsSchema) properties.get(i);
                        if (current.getNamespaceURI().equals(element.getNamespaceURI())) {
                            extensionTreeViewer.getTree().setToolTipText(current.getDescription());
                            break;
                        }
                    }
                }
            }
        }
    });
    PlatformUI.getWorkbench().getHelpSystem().setHelp(extensionTreeViewer.getControl(), XSDEditorCSHelpIds.EXTENSIONS_TAB__EXTENSIONS);
    Composite buttonComposite = getWidgetFactory().createComposite(tableAndButtonComposite, SWT.FLAT);
    // ColumnLayout columnLayout = new ColumnLayout();
    // buttonComposite.setLayout(columnLayout);
    buttonComposite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
    gridLayout = new GridLayout();
    gridLayout.marginTop = 0;
    gridLayout.marginBottom = 0;
    gridLayout.numColumns = 1;
    gridLayout.makeColumnsEqualWidth = true;
    buttonComposite.setLayout(gridLayout);
    addButton = getWidgetFactory().createButton(buttonComposite, Messages._UI_ACTION_ADD_WITH_DOTS, SWT.FLAT);
    addButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    addButton.addSelectionListener(this);
    addButton.setToolTipText(Messages._UI_ACTION_ADD_EXTENSION_COMPONENT);
    // addButton.setLayoutData(new ColumnLayoutData(ColumnLayoutData.FILL));
    addButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    PlatformUI.getWorkbench().getHelpSystem().setHelp(addButton, XSDEditorCSHelpIds.EXTENSIONS_TAB__ADD);
    removeButton = getWidgetFactory().createButton(buttonComposite, Messages._UI_DELETE_BUTTON, SWT.FLAT);
    removeButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    removeButton.addSelectionListener(this);
    removeButton.setToolTipText(Messages._UI_ACTION_DELETE_EXTENSION_COMPONENT);
    PlatformUI.getWorkbench().getHelpSystem().setHelp(removeButton, XSDEditorCSHelpIds.EXTENSIONS_TAB__DELETE);
    // removeButton.setLayoutData(new ColumnLayoutData(ColumnLayoutData.FILL));
    // TODO (cs) uncomment the up/down button when we have time to implement
    // 
    // Button up = getWidgetFactory().createButton(buttonComposite, Messages._UI_LABEL_UP, SWT.FLAT);
    // up.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    // Button down = getWidgetFactory().createButton(buttonComposite, Messages._UI_LABEL_DOWN, SWT.FLAT);
    // down.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    Composite rightContent = getWidgetFactory().createComposite(sashForm, SWT.FLAT);
    Section section2 = getWidgetFactory().createSection(rightContent, SWT.FLAT | ExpandableComposite.TITLE_BAR);
    section2.setText(Messages._UI_LABEL_EXTENSION_DETAILS);
    section2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    // contentLabel = getWidgetFactory().createLabel(rightContent, "Content");
    Composite testComp = getWidgetFactory().createComposite(rightContent, SWT.FLAT);
    gridLayout = new GridLayout();
    gridLayout.marginTop = 0;
    gridLayout.marginBottom = 0;
    gridLayout.marginLeft = 0;
    gridLayout.marginRight = 0;
    gridLayout.numColumns = 1;
    gridLayout.marginHeight = 3;
    gridLayout.marginWidth = 3;
    rightContent.setLayout(gridLayout);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.verticalAlignment = GridData.FILL;
    gridData.horizontalAlignment = GridData.FILL;
    rightContent.setLayoutData(gridData);
    gridLayout = new GridLayout();
    gridLayout.marginTop = 0;
    gridLayout.marginLeft = 0;
    gridLayout.marginRight = 0;
    gridLayout.marginBottom = 0;
    gridLayout.marginHeight = 3;
    gridLayout.marginWidth = 3;
    gridLayout.numColumns = 2;
    testComp.setLayout(gridLayout);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.verticalAlignment = GridData.FILL;
    gridData.horizontalAlignment = GridData.FILL;
    testComp.setLayoutData(gridData);
    createElementContentWidget(testComp);
    int[] weights = { 40, 60 };
    sashForm.setWeights(weights);
}
Also used : PropertySheet(org.eclipse.ui.views.properties.PropertySheet) TreeViewer(org.eclipse.jface.viewers.TreeViewer) Element(org.w3c.dom.Element) MouseTrackAdapter(org.eclipse.swt.events.MouseTrackAdapter) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) TabbedPropertySheetPage(org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage) ExtensionsSchemasRegistry(org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.ExtensionsSchemasRegistry) SpecificationForExtensionsSchema(org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.SpecificationForExtensionsSchema) GridLayout(org.eclipse.swt.layout.GridLayout) Control(org.eclipse.swt.widgets.Control) IWorkbenchPart(org.eclipse.ui.IWorkbenchPart) DOMExtensionItemMenuListener(org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.DOMExtensionItemMenuListener) ISelection(org.eclipse.jface.viewers.ISelection) ScrolledComposite(org.eclipse.swt.custom.ScrolledComposite) List(java.util.List) Composite(org.eclipse.swt.widgets.Composite) ScrolledComposite(org.eclipse.swt.custom.ScrolledComposite) ExpandableComposite(org.eclipse.ui.forms.widgets.ExpandableComposite) IEditorPart(org.eclipse.ui.IEditorPart) Section(org.eclipse.ui.forms.widgets.Section) Point(org.eclipse.swt.graphics.Point) SashForm(org.eclipse.swt.custom.SashForm) GridData(org.eclipse.swt.layout.GridData) MenuManager(org.eclipse.jface.action.MenuManager)

Aggregations

List (java.util.List)1 MenuManager (org.eclipse.jface.action.MenuManager)1 ISelection (org.eclipse.jface.viewers.ISelection)1 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)1 TreeViewer (org.eclipse.jface.viewers.TreeViewer)1 SashForm (org.eclipse.swt.custom.SashForm)1 ScrolledComposite (org.eclipse.swt.custom.ScrolledComposite)1 MouseTrackAdapter (org.eclipse.swt.events.MouseTrackAdapter)1 Point (org.eclipse.swt.graphics.Point)1 GridData (org.eclipse.swt.layout.GridData)1 GridLayout (org.eclipse.swt.layout.GridLayout)1 Composite (org.eclipse.swt.widgets.Composite)1 Control (org.eclipse.swt.widgets.Control)1 IEditorPart (org.eclipse.ui.IEditorPart)1 IWorkbenchPart (org.eclipse.ui.IWorkbenchPart)1 ExpandableComposite (org.eclipse.ui.forms.widgets.ExpandableComposite)1 Section (org.eclipse.ui.forms.widgets.Section)1 PropertySheet (org.eclipse.ui.views.properties.PropertySheet)1 TabbedPropertySheetPage (org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage)1 DOMExtensionItemMenuListener (org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.DOMExtensionItemMenuListener)1