Search in sources :

Example 1 with SpecificationForExtensionsSchema

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

the class AbstractExtensionsSection method widgetSelected.

public void widgetSelected(SelectionEvent event) {
    if (event.widget == addButton) {
        ExtensionsSchemasRegistry registry = getExtensionsSchemasRegistry();
        AddExtensionsComponentDialog dialog = createAddExtensionsComponentDialog();
        List properties = registry.getAllExtensionsSchemasContribution();
        dialog.setInput(properties);
        dialog.setBlockOnOpen(true);
        dialog.setPrefStore(getPrefStore());
        if (prevCategory != null)
            dialog.setInitialCategorySelection(prevCategory);
        if (dialog.open() == Window.OK) {
            Object newSelection = null;
            Object[] result = dialog.getResult();
            if (result != null) {
                SpecificationForExtensionsSchema extensionsSchemaSpec = (SpecificationForExtensionsSchema) result[1];
                AddExtensionCommand addExtensionCommand = getAddExtensionCommand(result[0]);
                if (addExtensionCommand != null) {
                    addExtensionCommand.setSchemaProperties(extensionsSchemaSpec);
                    if (getCommandStack() != null) {
                        getCommandStack().execute(addExtensionCommand);
                        newSelection = addExtensionCommand.getNewObject();
                    }
                }
            }
            // refresh();
            if (newSelection != null) {
                extensionTreeViewer.setSelection(new StructuredSelection(newSelection));
            }
        }
        prevCategory = dialog.getSelectedCategory();
    } else if (event.widget == removeButton) {
        ISelection selection = extensionTreeViewer.getSelection();
        if (selection instanceof StructuredSelection) {
            Object o = ((StructuredSelection) selection).getFirstElement();
            Command command = getRemoveExtensionCommand(o);
            if (getCommandStack() != null) {
                getCommandStack().execute(command);
            }
        }
    } else if (event.widget == extensionTreeViewer.getTree()) {
    }
}
Also used : SpecificationForExtensionsSchema(org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.SpecificationForExtensionsSchema) AddExtensionsComponentDialog(org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.AddExtensionsComponentDialog) Command(org.eclipse.gef.commands.Command) AddExtensionCommand(org.eclipse.wst.xsd.ui.internal.common.commands.AddExtensionCommand) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) ISelection(org.eclipse.jface.viewers.ISelection) ExtensionsSchemasRegistry(org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.ExtensionsSchemasRegistry) List(java.util.List) AddExtensionCommand(org.eclipse.wst.xsd.ui.internal.common.commands.AddExtensionCommand)

Example 2 with SpecificationForExtensionsSchema

use of org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.SpecificationForExtensionsSchema 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)2 ISelection (org.eclipse.jface.viewers.ISelection)2 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)2 ExtensionsSchemasRegistry (org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.ExtensionsSchemasRegistry)2 SpecificationForExtensionsSchema (org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.SpecificationForExtensionsSchema)2 Command (org.eclipse.gef.commands.Command)1 MenuManager (org.eclipse.jface.action.MenuManager)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