このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

下のコードリストは、メニューアイテムの作成方法を表示しています。  各 MapForceCommand オブジェクトは、コマンドの ID へのセットされている ActionCommand を持つ、対応する MenuItem オブジェクト、を取得します。 全てのメニューアイテムにより生成されているアクションは、(閉じられたメカニズムのを再度解釈するなどの)特定の処理を行う同じ関数により処理されます。 または、 exec メソッドを呼び出すことにより MapForceControl オブジェクトに実行を委任することができます。メニューの作成中にフィルされる menuMap オブジェクトは、 後で使用されます (次のセクションを参照してください: UI アップデートイベントハンドリング).

 

 

01

02       // Load the file menu when the button is pressed

03       btnMenu.addActionListener( new ActionListener() {

04         public void actionPerformed(ActionEvent e) {

05           try {

06             // Create the menubar that will be attached to the frame

07             MenuBar mb = new MenuBar();

08             // Load the main menu's first item - the File menu

09             MapForceCommand xmlSpyMenu = mapForceControl.getMainMenu().getSubCommands().getItem( 0 );

10             // Create Java menu items from the Commands objects

11             Menu fileMenu = new Menu();

12             handlerObject.fillMenu( fileMenu, xmlSpyMenu.getSubCommands() );

13             fileMenu.setLabel( xmlSpyMenu.getLabel().replace( "&", "" ) );

14             mb.add( fileMenu );

15             frame.setMenuBar( mb );

16             frame.validate();

17           } catch (AutomationException e1) {

18             e1.printStackTrace();

19           }

20           // Disable the button when the action has been performed

21           ((AbstractButton) e.getSource()).setEnabled( false );

22         }

23       } ) ;

24   /**

25    * Populates a menu with the commands and submenus contained in an MapForceCommands object

26    */

27   public void fillMenu(Menu newMenu, MapForceCommands mapForceMenu) throws AutomationException

28   {

29     // For each command/submenu in the mapForceMenu

30     for ( int i = 0 ; i < mapForceMenu.getCount() ; ++i  )

31     {

32       MapForceCommand mapForceCommand = mapForceMenu.getItem( i );

33       if ( mapForceCommand.getIsSeparator() )

34         newMenu.addSeparator();

35       else

36       {

37         MapForceCommands subCommands = mapForceCommand.getSubCommands();

38         // Is it a command (leaf), or a submenu?

39         if ( subCommands.isNull() || subCommands.getCount() == 0 )

40         {

41           // Command -> add it to the menu, set its ActionCommand to its ID and store it in the menuMap

42           MenuItem mi = new MenuItem( mapForceCommand.getLabel().replace( "&", "" ) );

43           mi.setActionCommand( "" + mapForceCommand.getID() );

44           mi.addActionListener( this );

45           newMenu.add( mi );

46           menuMap.put( mapForceCommand.getID(), mi );

47         }

48         else

49         {

50           // Submenu -> create submenu and repeat recursively

51           Menu newSubMenu = new Menu();

52           fillMenu( newSubMenu, subCommands );

53           newSubMenu.setLabel( mapForceCommand.getLabel().replace( "&", "" ) );

54           newMenu.add( newSubMenu );

55         }

56       }

57     }

58   }

59   /**

60    * Action handler for the menu items

61    * Called when the user selects a menu item; the item's action command corresponds to the command table for MapForce

62    */

63   public void actionPerformed( ActionEvent e )

64   {

65     try

66     {

67       int iCmd = Integer.parseInt( e.getActionCommand() );

68       // Handle explicitly the Close commands

69       switch ( iCmd )

70       {

71         case 57602:       // Close

72         case 34050:       // Close All

73           MapForceContainer.initMapForceDocument();

74           break;

75         default:

76           MapForceContainer.mapForceControl.exec( iCmd );

77           break;

78       }

79     }

80     catch ( Exception ex )

81     {

82       ex.printStackTrace();

83     }

84

85   }

(C) 2019 Altova GmbH