This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 211053 - API to dock/undock top components and groups/modes
Summary: API to dock/undock top components and groups/modes
Status: NEW
Alias: None
Product: platform
Classification: Unclassified
Component: Window System (show other bugs)
Version: 7.1.1
Hardware: All All
: P3 normal (vote)
Assignee: Stanislav Aubrecht
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-04-11 22:57 UTC by tdanard
Modified: 2012-10-26 14:32 UTC (History)
1 user (show)

See Also:
Issue Type: ENHANCEMENT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description tdanard 2012-04-11 22:57:49 UTC
There is no API to programmatically dock and float top components. Also, there is no API to programmatically dock, float and close groups/modes. Please provide a public API to do this.

This is what I have to do right now, which is quite ugly:

    public boolean isTopComponentDocked(TopComponent topComponent) {
        Class<?>[] paramKlasses = {TopComponent.class};
        Object[] parameters = {topComponent};
        AbstractAction obj = (AbstractAction) ReflectionUtil.newInstance("org.netbeans.core.windows.actions.UndockWindowAction
                paramKlasses, parameters);
        return obj.isEnabled();
    }

    public void setTopComponentDocked(TopComponent topComponent, boolean isDocked) {
        Class<?>[] paramKlasses = {TopComponent.class};
        Object[] parameters = {topComponent};
        if (isDocked) {
            AbstractAction obj = (AbstractAction) ReflectionUtil.newInstance("org.netbeans.core.windows.actions.DockWindowAction",
                    paramKlasses, parameters);
            obj.actionPerformed(null);
        } else {
            AbstractAction obj = (AbstractAction) ReflectionUtil.newInstance("org.netbeans.core.windows.actions.UndockWindowAction",
                    paramKlasses, parameters);
            obj.actionPerformed(null);
        }
   }

    public boolean isModeDocked(Mode mode) {
        Class<?>[] paramKlasses = {mode.getClass()};
        Object[] parameters = {mode};
        AbstractAction obj = (AbstractAction) ReflectionUtil.newInstance("org.netbeans.core.windows.actions.UndockModeAction",
                paramKlasses, parameters);
    }


    public void setModeDocked(Mode mode, boolean isDocked) {
        if (isDocked) {
            Class<?>[] paramKlasses = {}; // Not sure what to pass here
            Object[] parameters = {}; // Not sure what to pass here
            AbstractAction obj = (AbstractAction) ReflectionUtil.newInstance("org.netbeans.core.windows.actions.DockModeAction",
                    paramKlasses, parameters);
            obj.actionPerformed(null);
        } else {
            Class<?>[] paramKlasses = {mode.getClass()};
            Object[] parameters = {mode};
            AbstractAction obj = (AbstractAction) ReflectionUtil.newInstance("org.netbeans.core.windows.actions.UndockModeAction",
                     paramKlasses, parameters);
            obj.actionPerformed(null);
        }
    }


    public void closeMode(Mode mode) {
        Class<?>[] paramKlasses = {mode.getClass()};
        Object[] parameters = {mode};
        AbstractAction obj = (AbstractAction) ReflectionUtil.newInstance("org.netbeans.core.windows.actions.CloseModeAction",
                paramKlasses, parameters);
        obj.actionPerformed(null);
    }
Comment 1 markiewb 2012-10-26 14:32:36 UTC
There are also some workaround presented in https://blogs.oracle.com/geertjan/entry/case_study_customizing_the_netbeans