1

Git リポジトリ ページにフィルターを追加し、クラスを変更しましたRepositoryView。必要に応じてこのコードをオンラインで見つけることができるように、これについて言及しました。私の質問は、より一般的なアライメントの問題です。

この新しいフィルターを追加した後、これは、この変更後のロード時にgitリポジトリビューがどのように見えるかです ロード中

ビューを最大化すると、このようになります。ここでアライメントがうまくいきません。フィルターツールバーが中央に来ます。

最大化

その後、最小化すると、フィルター ツールバーがビューから消えます。 最小化

コードが変更されました

public void createPartControl(Composite aParent) {
        Composite displayArea = new Composite(aParent, SWT.NONE);
        displayArea.setLayout(new GridLayout());

        displayArea.setLayoutData(new GridData(SWT.FILL,6));


        final Composite temp = new Composite(displayArea, SWT.FILL);//XXX

        layout = new StackLayout();
        temp.setLayout(layout);
        createEmptyArea(temp);

        super.createPartControl(temp);

        IWorkbenchWindow w = PlatformUI.getWorkbench()
                .getActiveWorkbenchWindow();
        ICommandService csrv = (ICommandService) w
                .getService(ICommandService.class);
        Command command = csrv
                .getCommand("org.eclipse.egit.ui.RepositoriesLinkWithSelection"); //$NON-NLS-1$
        reactOnSelection = (Boolean) command.getState(
                RegistryToggleState.STATE_ID).getValue();

        GridDataFactory.fillDefaults().grab(true, true).applyTo(temp);//XXX
//      GridDataFactory.fillDefaults().grab(true, true).applyTo(displayArea);//XXX
        filterToolbar = new FilterToolbar(this, displayArea);
        IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) getSite()
                .getService(IWorkbenchSiteProgressService.class);
        if (service != null) {
            service.showBusyForFamily(JobFamilies.REPO_VIEW_REFRESH);
            service.showBusyForFamily(JobFamilies.CLONE);
        }
    }
4

1 に答える 1

0

@WaqasIlyasが言ったように、私はGridDataほとんど今日パラメータを試していましたが、あなたが言ったようにたまたまそれが機能するようになりました

public void createPartControl(Composite aParent) {
        Composite displayArea = new Composite(aParent, SWT.FILL);
        displayArea.setLayout(new GridLayout());
        displayArea.setLayoutData(new GridData(GridData.FILL,GridData.FILL, true, true));
        Composite historyComposite = new Composite(displayArea, SWT.NONE);

        layout = new StackLayout();
        historyComposite.setLayout(layout);
        historyComposite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL,GridData.VERTICAL_ALIGN_FILL, true, true));
        createEmptyArea(historyComposite);

        super.createPartControl(historyComposite);

        IWorkbenchWindow w = PlatformUI.getWorkbench()
                .getActiveWorkbenchWindow();
        ICommandService csrv = (ICommandService) w
                .getService(ICommandService.class);
        Command command = csrv
                .getCommand("org.eclipse.egit.ui.RepositoriesLinkWithSelection"); //$NON-NLS-1$
        reactOnSelection = (Boolean) command.getState(
                RegistryToggleState.STATE_ID).getValue();
//XXX added this code and changed the position of some statement to make it work
        GridDataFactory.fillDefaults().grab(true, true).applyTo(historyComposite);
        filterToolbar = new FilterToolbar(this, displayArea);
        ((GridData) filterToolbar.getLayoutData()).verticalAlignment = SWT.END;
        Point computeSize = filterToolbar.computeSize(SWT.DEFAULT, SWT.DEFAULT);
        ((GridData) filterToolbar.getLayoutData()).minimumWidth = computeSize.x;
        ((GridData) filterToolbar.getLayoutData()).minimumHeight = computeSize.y;
        GridDataFactory.fillDefaults().grab(true, true).align(GridData.FILL, GridData.FILL).applyTo(displayArea);
//xxx code change ends
        IWorkbenchSiteProgressService service = (IWorkbenchSiteProgressService) getSite()
                .getService(IWorkbenchSiteProgressService.class);
        if (service != null) {
            service.showBusyForFamily(JobFamilies.REPO_VIEW_REFRESH);
            service.showBusyForFamily(JobFamilies.CLONE);
        }
    }
于 2013-01-03T12:03:52.960 に答える