digitalmars.D.dwt - Help me on toolbar problem
Hi there, I am reading SWT: A Developer's Notebook and tried some code in the book,sure I also tried to re-organize the structure and to see what happens.In the attached simple code,the Option menu,Window menu and toobar item CHECK does not work properly.When I click on it,the application quit immediatley.I don't know why. Can anyboy help me? Thanks and best Regards, Sam
Aug 08 2008
Sam Hu Wrote:Hi there, I am reading SWT: A Developer's Notebook and tried some code in the book,sure I also tried to re-organize the structure and to see what happens.In the attached simple code,the Option menu,Window menu and toobar item CHECK does not work properly.When I click on it,the application quit immediatley.I don't know why. Can anyboy help me? Thanks and best Regards, SamI tried to open the attached code to see whether other people can open it ,but I failed.So I post the code here: /***************************************************/ module dwtEx01; import dwt.widgets.Widget; import dwt.widgets.Shell; import dwt.widgets.Display; import dwt.widgets.Menu; import dwt.widgets.MenuItem; import dwt.widgets.ToolBar; import dwt.widgets.ToolItem; import dwt.widgets.ToolTip; import dwt.graphics.Image; import dwt.widgets.Dialog; import dwt.widgets.MessageBox; import dwt.DWT; import dwt.events.SelectionEvent; import dwt.events.SelectionListener; import tango.io.Stdout; public class SubForm { this(Shell parent,int style) { Shell shell=new Shell(parent,style); shell.setText("Sub Form"); shell.setSize(300,300); shell.open; } } class MyDialog:Dialog { this(Shell parent) { super(parent); } void open() { Shell parent=getParent; Shell shell=new Shell(parent,DWT.DIALOG_TRIM|DWT.APPLICATION_MODAL); shell.setSize(150,80); shell.setText("Modal dialog"); Display display=parent.getDisplay; shell.open; while(!shell.isDisposed) { if(!display.readAndDispatch) display.sleep; } } } public class Form { private: Display display; Shell shell; Menu menu; ToolBar bar;; SubForm subForm; SubForm[] subFormArray; MyDialog myDialog; public: this() { initializeComponents; } void initializeComponents() { display=new Display; shell =new Shell(display); //Image img=new Image(display,r"C:\dmd\html\d\d002.ico"); shell.setSize(500,500); shell.setText("Example 01"); //shell.setImage(img); //ToolBar: bar=createToolBar; //main menu: menu=createMainMenu; shell.setMenuBar(menu); //add pop-up menu to the form: shell.setMenu(createPopMenu); //all done shell.open; /+ subFormArray= [ new SubForm(shell,DWT.DIALOG_TRIM), new SubForm(shell,DWT.SHELL_TRIM), new SubForm(shell,DWT.BORDER), new SubForm(shell,DWT.NO_TRIM)/*no close,no title,no min,no max*/ ]; MyDialog myDialog=new MyDialog(shell); myDialog.open; +/ while(!shell.isDisposed) { if(!display.readAndDispatch) display.sleep; } display.dispose; } private: Menu createMainMenu() { menu=new Menu(shell,DWT.BAR); //menu item File: final MenuItem file=new MenuItem(menu,DWT.CASCADE); file.setText("&File"); //File Menu: final Menu fileMenu=new Menu(shell,DWT.DROP_DOWN); file.setMenu(fileMenu); //menu item open: final MenuItem openItem=new MenuItem(fileMenu,DWT.CASCADE); openItem.setText("&Open"); //submenu attach to open menu: final Menu subMenu=new Menu(shell,DWT.DROP_DOWN); //subMenu content: final MenuItem childItem=new MenuItem(subMenu,DWT.PUSH); childItem.setText("Child"); childItem.setAccelerator(DWT.ALT+'C'); final MenuItem dialogItem=new MenuItem(subMenu,DWT.PUSH); dialogItem.setText("Dialog"); dialogItem.setAccelerator(DWT.CTRL+'D'); openItem.setMenu(subMenu); //menu item --: MenuItem separator=new MenuItem(fileMenu,DWT.SEPARATOR); //menu item exit: MenuItem exitItem=new MenuItem(fileMenu,DWT.PUSH); exitItem.setText("E&xit"); //Menu item Edit final MenuItem edit=new MenuItem(menu,DWT.CASCADE); edit.setText("Edit"); final Menu editMenu=new Menu(shell,DWT.DROP_DOWN); edit.setMenu(editMenu); final MenuItem cutItem=new MenuItem(editMenu,DWT.PUSH); cutItem.setText("Cut"); final MenuItem copyItem=new MenuItem(editMenu,DWT.PUSH); copyItem.setText("Copy"); final MenuItem pasteItem=new MenuItem(editMenu,DWT.PUSH); pasteItem.setText("Paste"); //check and radio button menu: final MenuItem options=new MenuItem(menu,DWT.CASCADE); options.setText("Options"); final Menu optionMenu=new Menu(shell,DWT.DROP_DOWN); final MenuItem checkItem=new MenuItem(optionMenu,DWT.CHECK); checkItem.setText("Checked Option"); checkItem.setAccelerator(DWT.CTRL+'C'); checkItem.setSelection(true); final MenuItem opionsSeparator=new MenuItem(optionMenu,DWT.SEPARATOR); final MenuItem radioItem1=new MenuItem(optionMenu,DWT.RADIO); radioItem1.setText("Radio One"); radioItem1.setAccelerator(DWT.ALT+'R'); final MenuItem radioItem2=new MenuItem(optionMenu,DWT.RADIO); radioItem2.setText("Radio Two"); radioItem2.setSelection(true); options.setMenu(optionMenu); //Window Menu: final MenuItem window=new MenuItem(menu,DWT.CASCADE); window.setText("&Window"); final Menu windowMenu=new Menu(shell,DWT.DROP_DOWN); window.setMenu(windowMenu); final MenuItem maxItem=new MenuItem(windowMenu,DWT.PUSH); maxItem.setText("Maximize"); final MenuItem minItem=new MenuItem(windowMenu,DWT.PUSH); minItem.setText("Minimize"); //help menu: final MenuItem help=new MenuItem(menu,DWT.CASCADE); help.setText("&Help"); final Menu helpMenu=new Menu(shell,DWT.DROP_DOWN); help.setMenu(helpMenu); final MenuItem aboutItem=new MenuItem(helpMenu,DWT.PUSH); aboutItem.setText("&About"); ////////////////////////////////////////////////////////////////////////////////// // Event Listener Here (Selection Listener) // ////////////////////////////////////////////////////////////////////////////////// /+ childItem.addSelectionListener(new class SelectionListener{ public void widgetSelected(SelectionEvent e) { Shell myParent=cast(Shell)childItem.getParent.getParent; subForm=new SubForm(myParent,DWT.DIALOG_TRIM); } public void widgetDefaultSelected(SelectionEvent e){/*leave empty */} }); +/ childItem.addSelectionListener(new openChildSelectionListener); dialogItem.addSelectionListener(new openDialogSelectionListener); checkItem.addSelectionListener(new checkMenuClickListener(checkItem)); radioItem1.addSelectionListener(new class SelectionListener{ public void widgetSelected(SelectionEvent e) { if(radioItem1.getSelection) { MessageBox.showInfo("RadioItem1 is selected.","HaHA"); } } public void widgetDefaultSelected(SelectionEvent e){} }); radioItem2.addSelectionListener(new class SelectionListener{ public void widgetSelected(SelectionEvent e) { if(radioItem2.getSelection) MessageBox.showInfo("RadioItem2 is selected.","HAHA"); } public void widgetDefaultSelected(SelectionEvent e){} }); minItem.addSelectionListener(new class SelectionListener{ public void widgetSelected(SelectionEvent e) { //Shell parent=cast(Shell)minItem.getParent.getParent; shell.setMinimized(true); } public void widgetDefaultSelected(SelectionEvent e){} }); maxItem.addSelectionListener(new class SelectionListener{ public void widgetSelected(SelectionEvent e) { //Shell parent=cast(Shell)maxItem.getParent.getParent; shell.setMaximized(true); } public void widgetDefaultSelected(SelectionEvent e){} }); return menu; } Menu createPopMenu() { final Menu popMenu=new Menu(shell,DWT.POP_UP); final MenuItem openChildItem=new MenuItem(popMenu,DWT.PUSH); openChildItem.setText("&Open child"); final MenuItem openDialogItem=new MenuItem(popMenu,DWT.PUSH); openDialogItem.setText("Open &dialog"); openChildItem.addSelectionListener(new openChildSelectionListener); openDialogItem.addSelectionListener(new openDialogSelectionListener); return popMenu; } ToolBar createToolBar() { final ToolBar bar =new ToolBar(shell,DWT.HORIZONTAL); bar.setSize(300,70); bar.setLocation(0,0); final ToolItem openChildItemBar=new ToolItem(bar,DWT.PUSH); //final Image image=new Image(display,r"C:\dmd\html\d\d002.ico"); //openChildItemBar.setImage(image ); openChildItemBar.setText("Child Window"); openChildItemBar.setToolTipText("This will open the child form"); openChildItemBar.addSelectionListener(new openChildSelectionListener); final ToolItem separatorBar1=new ToolItem(bar,DWT.SEPARATOR); final ToolItem openToolItem=new ToolItem(bar,DWT.CHECK); //openToolItem.setImage(new Image(display,r"C:\Program Files\Tencent\QQ\AirDLIcon\1381game.ico")); openToolItem.setText("Check Bar"); openToolItem.addSelectionListener(new checkMenuClickListener(openToolItem)); final ToolItem separatorBar2=new ToolItem(bar,DWT.SEPARATOR); final ToolItem radioBarItem1=new ToolItem(bar,DWT.RADIO); //radioBarItem1.setImage(new Image(display,r"C:\Program Files\Tencent\QQ\AirDLIcon\1381love.ico")); radioBarItem1.setText("Radio1"); final ToolItem radioBarItem2=new ToolItem(bar,DWT.RADIO); //radioBarItem2.setImage(new Image(display,r"C:\Program Files\Tencent\QQ\AirDLIcon\taotao.ico")); radioBarItem2.setText("Radio2"); return bar; } class openChildSelectionListener:SelectionListener { public void widgetSelected(SelectionEvent e) { //code here SubForm subForm=new SubForm(shell,DWT.SHELL_TRIM); } public void widgetDefaultSelected(SelectionEvent e) { //leave blank } } class openDialogSelectionListener:SelectionListener { public void widgetSelected(SelectionEvent e) { //code here Shell parent =cast(Shell)menu.getParent; //MessageBox.showInfo(parent==shell?"Yes":"No"); MyDialog myDialog=new MyDialog(parent); myDialog.open; } public void widgetDefaultSelected(SelectionEvent e) { //leave blank } } class checkMenuClickListener:SelectionListener { private: MenuItem item; ToolItem toolItem; public: this(MenuItem item) { this.item=item; } this(ToolItem toolItem) { this.toolItem=toolItem; } public void widgetSelected(SelectionEvent e) { if(item.getSelection||toolItem.getSelection) { MessageBox.showInfo("Checked","HAHA"); } else MessageBox.showInfo("Unchecked","HAHA"); } public void widgetDefaultSelected(SelectionEvent e) { //leave blank } } } int main(char[][] args) { scope Form form=new Form; return 0; } /**************************************************/
Aug 08 2008