简体   繁体   English

如何禁用/删除Eclipse Graphiti编辑器的面板?

[英]How do I disable/remove the Palette of an Eclipse Graphiti editor?

Trying to remove the palette of a Eclipse Graphiti editor. 尝试删除Eclipse Graphiti编辑器的调色板。

org.eclipse.graphiti.ui.editor.DiagramBehavior has a createPaletteBehaviour() to override but if I return null , the editor crashes. org.eclipse.graphiti.ui.editor.DiagramBehavior具有要覆盖的createPaletteBehaviour() ,但是如果我返回null ,则编辑器将崩溃。

I also tried this in the diagram behavior, but I actually don't want it collapsed but removed: 我也在图表行为中尝试了此方法,但实际上我不希望它崩溃而被删除:

@Override
protected DefaultPaletteBehavior createPaletteBehaviour() {
    return new DefaultPaletteBehavior(this) {
        @Override
        public FlyoutPreferences getPalettePreferences() {
            FlyoutPreferences palettePreferences = super.getPalettePreferences();
            palettePreferences.setPaletteState(FlyoutPaletteComposite.STATE_COLLAPSED);
            return palettePreferences;
        }
    };
}

I would also prefer to use some API instead of manipulating the preferences. 我也希望使用一些API而不是操纵首选项。

I just got a reply in the eclipse forum: https://www.eclipse.org/forums/index.php/m/1698886/ 我刚刚在eclipse论坛上得到了答复: https : //www.eclipse.org/forums/index.php/m/1698886/

" you can override isShowFlyoutPalette() in your tool behavior provider and return false there to hide the palette." 您可以在工具行为提供程序中覆盖isShowFlyoutPalette()并在其中返回false以隐藏调色板。”

This is what I was looking for. 这就是我想要的。

This is the hack I came up with, there is a org.eclipse.gef.ui.palette.FlyoutPaletteComposite.STATE_HIDDEN with the value "8", since the constant is private (and probably should not be used) I have to set it directly. 这是我想出的办法,这里有一个org.eclipse.gef.ui.palette.FlyoutPaletteComposite.STATE_HIDDEN ,其值为“ 8”,因为该常量是私有的(可能不应该使用),我必须对其进行设置直。

@Override
protected DefaultPaletteBehavior createPaletteBehaviour() {
    return new DefaultPaletteBehavior(this) {
        @Override
        public FlyoutPreferences getPalettePreferences() {
            FlyoutPreferences palettePreferences = super.getPalettePreferences();
            palettePreferences.setPaletteState(8);
            return palettePreferences;
        }
    };
}

But as mentioned I would prefer API instead of this preferences hack. 但是如上所述,我更喜欢API而不是这种偏好设置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM