blob: 487635b802503bb35e87d243ab1b9e71c5e3b33c [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= DevFaqWindowsNoActionsOnToolbars
:jbake-type: wiki
:jbake-tags: wiki, devfaq, needsreview
:jbake-status: published
:keywords: Apache NetBeans wiki DevFaqWindowsNoActionsOnToolbars
:description: Apache NetBeans wiki DevFaqWindowsNoActionsOnToolbars
:toc: left
:toc-title:
:syntax: true
== I want to disable the popup menu on the toolbars in the main window. How do I do that?
There is no canonical (or pretty) way to do this, but there is a hack you can do - it works in NetBeans 5.0, 5.5 and 6.x (and probably earlier versions but this wasn't tested).
Create the following `link:DevFaqModulesStartupActions.asciidoc[ModuleInstall]` class (remember to add a reference to it in the module manifest, e.g.
[source,java]
----
OpenIDE-Module-Install: org/netbeans/modules/toolbarthing/Installer.class
----
If you are using 5.0's update 1 of module development support or later, you can just use New File > NetBeans Plug-In Modules > Module Installer):
[source,java]
----
package org.netbeans.modules.toolbarthing;
import java.awt.Component;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JToolBar;
import org.openide.modules.ModuleInstall;
import org.openide.windows.WindowManager;
public class Installer extends ModuleInstall implements Runnable {
public void restored() {
WindowManager.getDefault().invokeWhenUIReady(this);
}
public void run() {
JToolBar[] tb = findToolbars();
for (int i = 0; i < tb.length; i++) {
processToolbar (tb[I]);
}
}
private JToolBar[] findToolbars() {
List l = new ArrayList();
JFrame jf = (JFrame) WindowManager.getDefault().getMainWindow();
findToolbars (jf.getContentPane(), l);
JToolBar[[ | ]] tb = (JToolBar[[ | ]]) l.toArray(new JToolBar[L.size()]);
return tb;
}
private void findToolbars(Component c, List l) {
if (c instanceof JToolBar) {
l.add(c);
} else if (c instanceof Container) {
Component[] cc = ((Container) c).getComponents();
for (int i=0; i < cc.length; i++) {
findToolbars(cc[I], l);
}
}
}
private void processToolbar (JToolBar bar) {
MouseListener[] ml = bar.getMouseListeners();
for (int i = 0; i < ml.length; i++) {
if (ml[I].getClass().getName().indexOf("PopupListener") >= 0) {
bar.removeMouseListener (ml[I]);
}
}
}
}
----
The above doesn't seems to work in 6.9.1. This is another similar module installer hack to achieve this:
[source,java]
----
public class Installer extends ModuleInstall
{
public void restored()
{
removeToolbarPopupMenu();
}
private void removeToolbarPopupMenu()
{
WindowManager.getDefault().invokeWhenUIReady(
new Runnable()
{
@Override
public void run()
{
removeAllPopupListeners(ToolbarPool.getDefault());
}
});
}
private static void removeAllPopupListeners(Component c)
{
if(c instanceof Container)
{
for(Component c2 : ((Container)c).getComponents())
{
for(MouseListener l : c2.getMouseListeners())
{
if(l.getClass().getName().contains("PopupListener"))
{
c2.removeMouseListener(l);
// Uncomment to obtain a similar console output
// Removing: org.openide.awt.ToolbarPool$PopupListener@1535ac from javax.swing.JPanel[...]
// Removing: org.openide.awt.ToolbarPool$PopupListener@1535ac from org.openide.awt.Toolbar[File,...]
//System.out.println("Removing: " + l + " from " + c2);
}
}
findToolbars(c2);
}
}
}
}
----
=== Apache Migration Information
The content in this page was kindly donated by Oracle Corp. to the
Apache Software Foundation.
This page was exported from link:http://wiki.netbeans.org/DevFaqWindowsNoActionsOnToolbars[http://wiki.netbeans.org/DevFaqWindowsNoActionsOnToolbars] ,
that was last modified by NetBeans user Adayth
on 2011-06-15T11:23:36Z.
*NOTE:* This document was automatically converted to the AsciiDoc format on 2018-02-07, and needs to be reviewed.