Панель инструментов Java RCP испорчена - PullRequest
0 голосов
/ 02 июля 2018

Ускорение панели инструментов от ожидаемого результата, если первая кнопка предположительно расположена на последней кнопке. Остальная часть кнопки предполагает отображение под строкой меню, это происходит при изменении версии затмения, и в настоящее время я использую Затмение Луны 4.4.2 эта строка, кажется, не помогает

IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.LEFT);

enter image description here

В eclipse 3.7 такие функции, как openWorkbenchWindow (Workbench.class), будут вызывать restoreWorkbenchWindow и в конечном итоге будут функционировать, как executeToolbar будет запускать

/*
 * (non-Javadoc) Method declared on IWorkbench.
 */
public IWorkbenchWindow openWorkbenchWindow(final String perspID,
        final IAdaptable input) throws WorkbenchException {
    // Run op in busy cursor.
    final Object[] result = new Object[1];
    BusyIndicator.showWhile(null, new Runnable() {
        public void run() {
            try {
                result[0] = busyOpenWorkbenchWindow(perspID, input);
            } catch (WorkbenchException e) {
                result[0] = e;
            }
        }
    });
    if (result[0] instanceof IWorkbenchWindow) {
        return (IWorkbenchWindow) result[0];
    } else if (result[0] instanceof WorkbenchException) {
        throw (WorkbenchException) result[0];
    } else {
        throw new WorkbenchException(
                WorkbenchMessages.Abnormal_Workbench_Conditi);
    }
}

/*
 * (non-Javadoc)
 * 
 * @see org.eclipse.ui.IWorkbench#restoreWorkbenchWindow(org.eclipse.ui.IMemento)
 */
IWorkbenchWindow restoreWorkbenchWindow(IMemento memento)
        throws WorkbenchException {
    WorkbenchWindow newWindow = newWorkbenchWindow();
    newWindow.create();

    windowManager.add(newWindow);

    // whether the window was opened
    boolean opened = false;

    try {
        newWindow.restoreState(memento, null);
        newWindow.fireWindowRestored();
        newWindow.open();
        opened = true;
    } finally {
        if (!opened) {
            newWindow.close();
        }
    }

    return newWindow;
}


 void updatePerspectiveBar() {
    // Update each item as the text may have to be shortened.
    IContributionItem[] items = perspectiveBar.getItems();
    for (int i = 0; i < items.length; i++) {
        items[i].update();
    }
    // make sure the selected item is visible
    perspectiveBar.arrangeToolbar();
    setCoolItemSize(coolItem);
    perspectiveBar.getControl().redraw();

    if (getControl() != null)
        getControl().pack(true);
}

однако, eclipse 4.4.2 больше не содержит вышеуказанных функций содержимое функций отличается, и restoreWorkbenchWindow больше не поддерживается.

/*
 * (non-Javadoc) Method declared on IWorkbench.
 */
@Override
public IWorkbenchWindow openWorkbenchWindow(String perspectiveId, IAdaptable input)
        throws WorkbenchException {
    IPerspectiveDescriptor descriptor = getPerspectiveRegistry().findPerspectiveWithId(
            perspectiveId);
    try {
        MWindow window = BasicFactoryImpl.eINSTANCE.createTrimmedWindow();
        return openWorkbenchWindow(input, descriptor, window, true);
    } catch (InjectionException e) {
        throw new WorkbenchException(e.getMessage(), e);
    }
}

public WorkbenchWindow openWorkbenchWindow(IAdaptable input, IPerspectiveDescriptor descriptor,
        MWindow window, boolean newWindow) {
    return (WorkbenchWindow) createWorkbenchWindow(input, descriptor, window, newWindow);
}

любой совет или способ решить проблемы, с которыми я сталкиваюсь? спасибо.

...