为ToolBarManager添加自定义控件

原创 2007年09月30日 14:57:00
        ToolBarManager是对SWT的ToolBar控件的封装,用它可以省去对这些底层控件的关注,就像使用了TableViewer,就不需要再去关心TableItem这些繁琐的细节一样。
        在一般情况下我们都是向ToolBarManager里面添加Action,显示的效果就是一个Button。如果希望显示一个Combo或者Text这样的控 件,就不能向其中添加Action了,而且又不想使用ToolBar处理具体的ToolItem,以下是两种解决办法:
        第一种:
        构建自己的ControlContribution 就可以很容易的实现这样的功能。
        首先要继承ControlContribution类,实现其protected Control createControl(Composite parent)方法,在这个方法中构建自己希望的控件,只要是Control的子类就都可以,然后将其添加到ToolBarManager里面即可。
        以下即为在View的工具栏中添加自定义控件Combo

        第一步、新建类ComboContribution,并继承ControlContribution类,然后实现其protected Control createControl(Composite parent)方法,在这个方法中构建Combo控件
    class ComboContribution extends ControlContribution...{

        
public ComboContribution(String id)...{
            
super(id);
        }


        @Override
        
protected Control createControl(Composite parent)...{
            Combo combo 
= new Combo(parent, SWT.READ_ONLY);
            combo.setItems(
new String[]..."First""Secend""Third" });
            combo.addSelectionListener(
new SelectionListener()...{

                
public void widgetDefaultSelected(SelectionEvent e) ...{
                    
// TODO Auto-generated method stub
                    
                }


                
public void widgetSelected(SelectionEvent e) ...{
                    
// TODO Auto-generated method stub
                    textSysInfo.append("View工具栏测试!");
                }

                
            }
);
            
return combo;
        }

    }
       第二步、private void initializeToolBar()中将其添加到ToolBarManager
/** *//**
     * Initialize the toolbar
     
*/

    
private void initializeToolBar() ...{
        IToolBarManager toolbarManager 
= getViewSite().getActionBars().getToolBarManager();
        Action deleteAction 
= new Action()...{
            
public void run()...{
                textSysInfo.setText(
"");
            }

        }
;
        deleteAction.setText(
"清空");
        deleteAction.setToolTipText(
"清空系统信息");
        deleteAction.setImageDescriptor(PlatformUI.getWorkbench().
                    getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_DELETE));
        toolbarManager.add(deleteAction);
        
        ComboContribution combo 
= new ComboContribution("Combo.contribution");
        toolbarManager.add(combo);
    }
       第二种:
       于第一种类似,只是实现的是继承ContributionItem类,也是实现其protected Control createControl(Composite parent)方法,在这个方法中构建自定义控件。

        代码如下:
     class ComboContribution2 extends ContributionItem...{    

            
private ToolItem toolitem;

            
private Combo fFindCombo;

            
private Button upFindbutton;

            
private Button downFindbutton;

            
private Button allFindbutton;

            
public ComboContribution2() ...{
                
super();
            }

                    
            
protected Control createControl(Composite parent) ...{
                
                Composite composite 
= new Composite(parent, SWT.NONE);
                
                
//查询框
                fFindCombo = new Combo(composite,SWT.NONE);
                fFindCombo.setLocation(
02);
                fFindCombo.setSize(
130,20);
                System.out.println(
" fFindCombo == " + fFindCombo.getBounds());
                
//向上查
                upFindbutton = new Button(composite, SWT.NONE);
                upFindbutton.setLocation(
1352);
                upFindbutton.setSize(
30,20);
                upFindbutton.setText(
"上查");    
                upFindbutton.addSelectionListener(
new SelectionListener()...{

                    
public void widgetDefaultSelected(SelectionEvent e) ...{
                        
// TODO 自动生成方法存根
                        
                    }


                    
public void widgetSelected(SelectionEvent e) ...{
                        fFindCombo.add(fFindCombo.getText());
                        
                    }

                    
                }
);
                System.out.println(
" upFindbutton == " + upFindbutton.getBounds());
                
//向下查
                downFindbutton = new Button(composite, SWT.NONE);
                downFindbutton.setLocation(
1702);
                downFindbutton.setSize(
30,20);
                downFindbutton.setText(
"下查");
                
//全部查询
                allFindbutton = new Button(composite, SWT.NONE);
                allFindbutton.setLocation(
2052);
                allFindbutton.setSize(
30,20);
                allFindbutton.setText(
"全部");

                toolitem.setWidth(
240);

                
return composite;
            }


            
public void fill(ToolBar parent, int index) ...{
                toolitem 
= new ToolItem(parent, SWT.SEPARATOR, index);
                Control control 
= createControl(parent);
                toolitem.setControl(control);
            }


        }

       然后同样在View的private void initializeToolBar()方法中将其添加到ToolBarManager即可。

android5.0之往toolbar上添加按钮

第一步: 在res目录下的menu目录下,新建自己的菜单文件,如下
  • carlos1992
  • carlos1992
  • 2016年02月21日 12:08
  • 10922

QtDesigner如何添加工具栏toolBar

QtDesigner如何添加工具栏toolBar   2014-04-05 16:59:40|  分类: Qt |  标签:qt  工具栏  qaction  qtdesigner  toolb...
  • u012803067
  • u012803067
  • 2017年06月04日 08:31
  • 621

第十一周项目1 算法验证4 哈夫曼树

#include #include #define N 50 #define M 2*N-1 //哈夫曼树的节点结构类型 typedef struct { c...
  • Neslon
  • Neslon
  • 2015年11月30日 17:18
  • 239

实现toolbar上的搜索栏

先看一下效果图:点击搜索图标之前和点击之后                                                 步骤:1.利用最新版的Android Studio生成一个...
  • qq_21700489
  • qq_21700489
  • 2015年11月22日 14:55
  • 3715

哈夫曼树--最优二叉树

哈夫曼树,又称最优树,是一类带权路径长度最短的树。 路径:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径 路径长度:路径上的分支数目称作路径长度 树的路径长度:从树根到每一个每一个...
  • hello_bravo_
  • hello_bravo_
  • 2016年10月13日 19:57
  • 268

寻找到大Bug一只

#include #include #define MAXSIZE 10000 int count; typedef struct node { int weight; int d...
  • wuxinliulei
  • wuxinliulei
  • 2013年12月01日 16:52
  • 680

在Fragment中如何使用Toolbar

这个Toolbar实在折磨了我好几天。。。知道看到下面这个提醒然后出去吹了吹风,终于弄出来了....其实跟提醒无关。我卡在这句上了.... toolbar.inflateMenu(R.m...
  • tiramisu_ljh
  • tiramisu_ljh
  • 2016年01月08日 15:21
  • 6148

给Toolbar的menu添加图标

废话不多说。直接进入主题。。。。。 今天要实现产品设计的新界面,要使用带Toolbar控件,于是手起刀落,麻溜的一下就写好了: ...
  • YYXXLL2
  • YYXXLL2
  • 2017年04月18日 09:57
  • 1307

【数据结构】算法4.1 定位函数Index

#include #include #include#define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0#define MAXSIZE...
  • Vit_rose
  • Vit_rose
  • 2016年10月10日 19:55
  • 1141

关于布局中LinearLayout的fill_parent失效的解决方法

最近在给一个Fragment做个XML布局文件,该Fragment是嵌套在一个Activity里的.发现给他里面的子view设了fill_parent都不会扩展.而且很奇怪,试过各种设置,都没用.  ...
  • tempersitu
  • tempersitu
  • 2015年11月12日 10:10
  • 2123
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为ToolBarManager添加自定义控件
举报原因:
原因补充:

(最多只允许输入30个字)