Class Toolbar

All Implemented Interfaces:
Animation, Editable, StyleListener, Iterable<Component>

public class Toolbar extends Container

Toolbar replaces the default title area with a powerful abstraction that allows functionality ranging from side menus (hamburger) to title animations and any arbitrary component type. Toolbar allows customizing the Form title with different commands on the title area, within the side menu or the overflow menu.

The Toolbar allows placing components in one of 4 positions as illustrated by the sample below:

Toolbar.setGlobalToolbar(true);

Form hi = new Form("Toolbar", new BoxLayout(BoxLayout.Y_AXIS));
Style s = UIManager.getInstance().getComponentStyle("TitleCommand");
FontImage icon = FontImage.createMaterial(FontImage.MATERIAL_WARNING, s);
hi.getToolbar().addCommandToLeftBar("Left", icon, (e) -> Log.p("Clicked"));
hi.getToolbar().addCommandToRightBar("Right", icon, (e) -> Log.p("Clicked"));
hi.getToolbar().addCommandToOverflowMenu("Overflow", icon, (e) -> Log.p("Clicked"));
hi.getToolbar().addCommandToSideMenu("Sidemenu", icon, (e) -> Log.p("Clicked"));
hi.show();

Toolbar supports a search mode that implicitly replaces the title with a search field/magnifying glass effect. The code below demonstrates searching thru the contacts using this API:

Image duke = null;
try {
    duke = Image.createImage("/duke.png");
} catch(IOException err) {
    Log.e(err);
}
int fiveMM = Display.getInstance().convertToPixels(5);
final Image finalDuke = duke.scaledWidth(fiveMM);
Toolbar.setGlobalToolbar(true);
Form hi = new Form("Search", BoxLayout.y());
hi.add(new InfiniteProgress());
Display.getInstance().scheduleBackgroundTask(()-> {
    // this will take a while...
    Contact[] cnts = Display.getInstance().getAllContacts(true, true, true, true, false, false);
    Display.getInstance().callSerially(() -> {
        hi.removeAll();
        for(Contact c : cnts) {
            MultiButton m = new MultiButton();
            m.setTextLine1(c.getDisplayName());
            m.setTextLine2(c.getPrimaryPhoneNumber());
            Image pic = c.getPhoto();
            if(pic != null) {
                m.setIcon(fill(pic, finalDuke.getWidth(), finalDuke.getHeight()));
            } else {
                m.setIcon(finalDuke);
            }
            hi.add(m);
        }
        hi.revalidate();
    });
});

hi.getToolbar().addSearchCommand(e -> {
    String text = (String)e.getSource();
    if(text == null || text.length() == 0) {
        // clear search
        for(Component cmp : hi.getContentPane()) {
            cmp.setHidden(false);
            cmp.setVisible(true);
        }
        hi.getContentPane().animateLayout(150);
    } else {
        text = text.toLowerCase();
        for(Component cmp : hi.getContentPane()) {
            MultiButton mb = (MultiButton)cmp;
            String line1 = mb.getTextLine1();
            String line2 = mb.getTextLine2();
            boolean show = line1 != null && line1.toLowerCase().indexOf(text) > -1 ||
                    line2 != null && line2.toLowerCase().indexOf(text) > -1;
            mb.setHidden(!show);
            mb.setVisible(show);
        }
        hi.getContentPane().animateLayout(150);
    }
}, 4);

hi.show();

The following code also demonstrates search with a more custom UX where the title area was replaced dynamically. This code predated the builtin search support above. Notice that the TextField and its hint are styled to look like the title.

Toolbar.setGlobalToolbar(true);
Style s = UIManager.getInstance().getComponentStyle("Title");

Form hi = new Form("Toolbar", new BoxLayout(BoxLayout.Y_AXIS));
TextField searchField = new TextField("", "Toolbar Search"); //
searchField.getHintLabel().setUIID("Title");
searchField.setUIID("Title");
searchField.getAllStyles().setAlignment(Component.LEFT);
hi.getToolbar().setTitleComponent(searchField);
FontImage searchIcon = FontImage.createMaterial(FontImage.MATERIAL_SEARCH, s);
searchField.addDataChangeListener((i1, i2) -> { //
    String t = searchField.getText();
    if(t.length()  -1;
            cmp.setHidden(!show); //
            cmp.setVisible(show);
        }
    }
    hi.getContentPane().animateLayout(250);
});
hi.getToolbar().addCommandToRightBar("", searchIcon, (e) -> {
    searchField.startEditingAsync(); //
});

hi.add("A Game of Thrones").
        add("A Clash Of Kings").
        add("A Storm Of Swords").
        add("A Feast For Crows").
        add("A Dance With Dragons").
        add("The Winds of Winter").
        add("A Dream of Spring");
hi.show();

This sample code show off title animations that allow a title to change (and potentially shrink) as the user scrolls down the UI. The 3 frames below show a step by step process in the change.

Toolbar.setGlobalToolbar(true);

Form hi = new Form("Toolbar", new BoxLayout(BoxLayout.Y_AXIS));
EncodedImage placeholder = EncodedImage.createFromImage(Image.createImage(hi.getWidth(), hi.getWidth() / 5, 0xffff0000), true);
URLImage background = URLImage.createToStorage(placeholder, "400px-AGameOfThrones.jpg",
        "http://awoiaf.westeros.org/images/thumb/9/93/AGameOfThrones.jpg/400px-AGameOfThrones.jpg");
background.fetch();
Style stitle = hi.getToolbar().getTitleComponent().getUnselectedStyle();
stitle.setBgImage(background);
stitle.setBackgroundType(Style.BACKGROUND_IMAGE_SCALED_FILL);
stitle.setPaddingUnit(Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS, Style.UNIT_TYPE_DIPS);
stitle.setPaddingTop(15);
SpanButton credit = new SpanButton("This excerpt is from A Wiki Of Ice And Fire. Please check it out by clicking here!");
credit.addActionListener((e) -> Display.getInstance().execute("http://awoiaf.westeros.org/index.php/A_Game_of_Thrones"));
hi.add(new SpanLabel("A Game of Thrones is the first of seven planned novels in A Song of Ice and Fire, an epic fantasy series by American author George R. R. Martin. It was first published on 6 August 1996. The novel was nominated for the 1998 Nebula Award and the 1997 World Fantasy Award,[1] and won the 1997 Locus Award.[2] The novella Blood of the Dragon, comprising the Daenerys Targaryen chapters from the novel, won the 1997 Hugo Award for Best Novella. ")).
        add(new Label("Plot introduction", "Heading")).
        add(new SpanLabel("A Game of Thrones is set in the Seven Kingdoms of Westeros, a land reminiscent of Medieval Europe. In Westeros the seasons last for years, sometimes decades, at a time.\n\n" +
            "Fifteen years prior to the novel, the Seven Kingdoms were torn apart by a civil war, known alternately as \"Robert's Rebellion\" and the \"War of the Usurper.\" Prince Rhaegar Targaryen kidnapped Lyanna Stark, arousing the ire of her family and of her betrothed, Lord Robert Baratheon (the war's titular rebel). The Mad King, Aerys II Targaryen, had Lyanna's father and eldest brother executed when they demanded her safe return. Her second brother, Eddard, joined his boyhood friend Robert Baratheon and Jon Arryn, with whom they had been fostered as children, in declaring war against the ruling Targaryen dynasty, securing the allegiances of House Tully and House Arryn through a network of dynastic marriages (Lord Eddard to Catelyn Tully and Lord Arryn to Lysa Tully). The powerful House Tyrell continued to support the King, but House Lannister and House Martell both stalled due to insults against their houses by the Targaryens. The civil war climaxed with the Battle of the Trident, when Prince Rhaegar was killed in battle by Robert Baratheon. The Lannisters finally agreed to support King Aerys, but then brutally... ")).
        add(credit);

ComponentAnimation title = hi.getToolbar().getTitleComponent().createStyleAnimation("Title", 200);
hi.getAnimationManager().onTitleScrollAnimation(title);
hi.show();
  • Constructor Details

    • Toolbar

      public Toolbar()
      Empty Constructor
    • Toolbar

      public Toolbar(boolean layered)

      This constructor places the Toolbar on a different layer on top of the Content Pane.

      Parameters
      • layered: if true places the Toolbar on top of the Content Pane
  • Method Details

    • isCenteredDefault

      public static boolean isCenteredDefault()

      Indicates whether the toolbar should be properly centered by default

      Returns

      the centeredDefault

    • setCenteredDefault

      public static void setCenteredDefault(boolean aCenteredDefault)

      Indicates whether the toolbar should be properly centered by default

      Parameters
      • aCenteredDefault: the centeredDefault to set
    • isOnTopSideMenu

      public static boolean isOnTopSideMenu()

      Indicates if the side menu is in "on-top" mode

      Returns

      the onTopSideMenu

    • setOnTopSideMenu

      public static void setOnTopSideMenu(boolean aOnTopSideMenu)

      Sets the side menu to "on-top" mode

      Parameters
      • aOnTopSideMenu: the onTopSideMenu to set
    • isEnableSideMenuSwipe

      public static boolean isEnableSideMenuSwipe()

      Enables/Disables the side menu bar swipe, defaults to true

      Returns

      the enableSideMenuSwipe

    • setEnableSideMenuSwipe

      public static void setEnableSideMenuSwipe(boolean aEnableSideMenuSwipe)

      Enables/Disables the side menu bar swipe, defaults to true

      Parameters
      • aEnableSideMenuSwipe: the enableSideMenuSwipe to set
    • isGlobalToolbar

      public static boolean isGlobalToolbar()

      Enables/disables the Toolbar for all the forms in the application. This flag can be flipped via the theme constant globalToobarBool. Notice that the name of this method might imply that one toolbar instance will be used for all forms which isn't the case, separate instances will be used for each form

      Returns

      true if the toolbar API is turned on by default

    • setGlobalToolbar

      public static void setGlobalToolbar(boolean gt)

      Enables/disables the Toolbar for all the forms in the application. This flag can be flipped via the theme constant globalToobarBool. Notice that the name of this method might imply that one toolbar instance will be used for all forms which isn't the case, separate instances will be used for each form

      Parameters
      • gt: true to enable the toolbar globally
    • isPermanentSideMenu

      public static boolean isPermanentSideMenu()

      Creates a static side menu that doesn't fold instead of the standard sidemenu. This is common for tablet UI's where folding the side menu doesn't make as much sense.

      Returns

      true if we will use a permanent sidemenu

    • setPermanentSideMenu

      public static void setPermanentSideMenu(boolean p)

      Creates a static side menu that doesn't fold instead of the standard sidemenu. This is common for tablet UI's where folding the side menu doesn't make as much sense.

      Parameters
      • p: true to have a permanent side menu
    • setTitle

      public void setTitle(String title)

      Sets the title of the Toolbar.

      Parameters
      • title: the Toolbar title
    • isTitleCentered

      public boolean isTitleCentered()

      Returns true if the title is centered via the layout

      Returns

      true if the title is centered

    • setTitleCentered

      public void setTitleCentered(boolean cent)

      Makes the title align to the center accurately by doing it at the layout level which also takes into account right/left commands

      Parameters
      • cent: whether the title should be centered
    • openSideMenu

      public void openSideMenu()
      This is a convenience method to open the left side menu bar. It's useful for cases where we want to place the menu button in a "creative way" in which case we can bind the side menu to this
    • isSideMenuShowing

      public boolean isSideMenuShowing()
      Returns true if the left or right side menu is open which is useful for walk through tours etc.
    • openRightSideMenu

      public void openRightSideMenu()
      This is a convenience method to open the right side menu bar. It's useful for cases where we want to place the menu button in a "creative way" in which case we can bind the side menu to this
    • closeSideMenu

      public void closeSideMenu()
      Closes the current side menu
    • closeLeftSideMenu

      public void closeLeftSideMenu()
      Closes the left side menu
    • closeRightSideMenu

      public void closeRightSideMenu()
      Closes the right side menu
    • getTitleComponent

      public Component getTitleComponent()

      Returns the Toolbar title Component.

      Returns

      the Toolbar title component

    • setTitleComponent

      public void setTitleComponent(Component titleCmp)

      Sets the Toolbar title component. This method allow placing any component in the Toolbar center instead of the regular Label. Can be used to place a TextField to perform search operations

      Parameters
      • titleCmp: Component to place in the Toolbar center.
    • addCommandToOverflowMenu

      public Command addCommandToOverflowMenu(String name, Image icon, ActionListener ev)

      Adds a Command to the overflow menu

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • setBackCommand

      public Command setBackCommand(String title, ActionListener<ActionEvent> listener)

      Sets the back command in the title bar to an arrow type and maps the back command hardware key if applicable. This is functionally identical to setBackCommand(title, Toolbar.BackCommandPolicy.AS_ARROW, listener);

      Parameters
      • title: command title

      • listener: action event for the back command

      Returns

      the created command

    • setBackCommand

      public void setBackCommand(Command cmd)

      Sets the back command in the title bar to an arrow type and maps the back command hardware key if applicable. This is functionally identical to setBackCommand(cmd, Toolbar.BackCommandPolicy.AS_ARROW);

      Parameters
      • cmd: the command
    • setBackCommand

      public Command setBackCommand(String title, Toolbar.BackCommandPolicy policy, ActionListener<ActionEvent> listener)

      Sets the back command in the title bar and in the form, back command behaves based on the given policy type

      Parameters
      • title: command title

      • policy: the behavior of the back command in the title

      • listener: action event for the back command

      Returns

      the created command

    • setBackCommand

      public void setBackCommand(Command cmd, Toolbar.BackCommandPolicy policy, float iconSize)

      Sets the back command in the title bar and in the form, back command behaves based on the given policy type

      Parameters
      • cmd: the command

      • policy: the behavior of the back command in the title

      • iconSize: the size of the back command icon in millimeters

    • setBackCommand

      public void setBackCommand(Command cmd, Toolbar.BackCommandPolicy policy)

      Sets the back command in the title bar and in the form, back command behaves based on the given policy type

      Parameters
      • cmd: the command

      • policy: the behavior of the back command in the title

    • addSearchCommand

      public void addSearchCommand(ActionListener callback, float iconSize)

      This method add a search Command on the right bar of the Toolbar. When the search Command is invoked the current Toolbar is replaced with a search Toolbar to perform a search on the Current Form.

      The callback ActionListener gets the search string and it's up to developer to do the actual filtering on the Form.

      It is possible to customize the default look of the search Toolbar with the following uiid's: ToolbarSearch, TextFieldSearch & TextHintSearch.

      Image duke = null;
      try {
          duke = Image.createImage("/duke.png");
      } catch(IOException err) {
          Log.e(err);
      }
      int fiveMM = Display.getInstance().convertToPixels(5);
      final Image finalDuke = duke.scaledWidth(fiveMM);
      Toolbar.setGlobalToolbar(true);
      Form hi = new Form("Search", BoxLayout.y());
      hi.add(new InfiniteProgress());
      Display.getInstance().scheduleBackgroundTask(()-> {
          // this will take a while...
          Contact[] cnts = Display.getInstance().getAllContacts(true, true, true, true, false, false);
          Display.getInstance().callSerially(() -> {
              hi.removeAll();
              for(Contact c : cnts) {
                  MultiButton m = new MultiButton();
                  m.setTextLine1(c.getDisplayName());
                  m.setTextLine2(c.getPrimaryPhoneNumber());
                  Image pic = c.getPhoto();
                  if(pic != null) {
                      m.setIcon(fill(pic, finalDuke.getWidth(), finalDuke.getHeight()));
                  } else {
                      m.setIcon(finalDuke);
                  }
                  hi.add(m);
              }
              hi.revalidate();
          });
      });
      
      hi.getToolbar().addSearchCommand(e -> {
          String text = (String)e.getSource();
          if(text == null || text.length() == 0) {
              // clear search
              for(Component cmp : hi.getContentPane()) {
                  cmp.setHidden(false);
                  cmp.setVisible(true);
              }
              hi.getContentPane().animateLayout(150);
          } else {
              text = text.toLowerCase();
              for(Component cmp : hi.getContentPane()) {
                  MultiButton mb = (MultiButton)cmp;
                  String line1 = mb.getTextLine1();
                  String line2 = mb.getTextLine2();
                  boolean show = line1 != null && line1.toLowerCase().indexOf(text) > -1 ||
                          line2 != null && line2.toLowerCase().indexOf(text) > -1;
                  mb.setHidden(!show);
                  mb.setVisible(show);
              }
              hi.getContentPane().animateLayout(150);
          }
      }, 4);
      
      hi.show();
      
      Parameters
      • callback: gets the search string callbacks

      • iconSize: @param iconSize indicates the size of the icons used in the search/back in millimeters

    • showSearchBar

      public void showSearchBar(ActionListener<ActionEvent> callback)

      Shows the search bar manually which is useful for use cases of popping up search from code

      Parameters
      • callback: gets the search string callbacks
    • removeSearchCommand

      public void removeSearchCommand()
      Removes a previously installed search command
    • addSearchCommand

      public void addSearchCommand(ActionListener callback)

      This method add a search Command on the right bar of the Toolbar. When the search Command is invoked the current Toolbar is replaced with a search Toolbar to perform a search on the Current Form.

      The callback ActionListener gets the search string and it's up to developer to do the actual filtering on the Form.

      It is possible to customize the default look of the search Toolbar with the following uiid's: ToolbarSearch, TextFieldSearch & TextHintSearch.

      Image duke = null;
      try {
          duke = Image.createImage("/duke.png");
      } catch(IOException err) {
          Log.e(err);
      }
      int fiveMM = Display.getInstance().convertToPixels(5);
      final Image finalDuke = duke.scaledWidth(fiveMM);
      Toolbar.setGlobalToolbar(true);
      Form hi = new Form("Search", BoxLayout.y());
      hi.add(new InfiniteProgress());
      Display.getInstance().scheduleBackgroundTask(()-> {
          // this will take a while...
          Contact[] cnts = Display.getInstance().getAllContacts(true, true, true, true, false, false);
          Display.getInstance().callSerially(() -> {
              hi.removeAll();
              for(Contact c : cnts) {
                  MultiButton m = new MultiButton();
                  m.setTextLine1(c.getDisplayName());
                  m.setTextLine2(c.getPrimaryPhoneNumber());
                  Image pic = c.getPhoto();
                  if(pic != null) {
                      m.setIcon(fill(pic, finalDuke.getWidth(), finalDuke.getHeight()));
                  } else {
                      m.setIcon(finalDuke);
                  }
                  hi.add(m);
              }
              hi.revalidate();
          });
      });
      
      hi.getToolbar().addSearchCommand(e -> {
          String text = (String)e.getSource();
          if(text == null || text.length() == 0) {
              // clear search
              for(Component cmp : hi.getContentPane()) {
                  cmp.setHidden(false);
                  cmp.setVisible(true);
              }
              hi.getContentPane().animateLayout(150);
          } else {
              text = text.toLowerCase();
              for(Component cmp : hi.getContentPane()) {
                  MultiButton mb = (MultiButton)cmp;
                  String line1 = mb.getTextLine1();
                  String line2 = mb.getTextLine2();
                  boolean show = line1 != null && line1.toLowerCase().indexOf(text) > -1 ||
                          line2 != null && line2.toLowerCase().indexOf(text) > -1;
                  mb.setHidden(!show);
                  mb.setVisible(show);
              }
              hi.getContentPane().animateLayout(150);
          }
      }, 4);
      
      hi.show();
      
      Parameters
      • callback: gets the search string callbacks
    • addCommandToOverflowMenu

      public void addCommandToOverflowMenu(Command cmd)

      Adds a Command to the overflow menu

      Parameters
      • cmd: a Command
    • getOverflowCommands

      public Iterable<Command> getOverflowCommands()

      Returns the commands within the overflow menu which can be useful for things like unit testing. Notice that you should not mutate the commands or the iteratable set in any way!

      Returns

      the commands in the overflow menu

    • addCommandToSideMenu

      public Command addCommandToSideMenu(String name, Image icon, ActionListener ev)

      Adds a Command to the left or right side navigation menu according to the state of RTL.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addCommandToLeftSideMenu

      public Command addCommandToLeftSideMenu(String name, Image icon, ActionListener ev)

      Adds a Command to the left side navigation menu

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addCommandToRightSideMenu

      public Command addCommandToRightSideMenu(String name, Image icon, ActionListener ev)

      Adds a Command to the right side navigation menu (it requires a permanent sidemenu or an onTop mode sidemenu, otherwise it does nothing)

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addComponentToSideMenu

      public void addComponentToSideMenu(Component cmp)

      Adds a Component to the left or right side navigation menu, according to the state of RTL.

      Parameters
      • cmp: c Component to be added to the menu
    • addComponentToSideMenu

      protected void addComponentToSideMenu(Container menu, Component cmp)

      This method is responsible to add a Component to the left or right side navigation panel according to the state of RTL.

      Parameters
      • menu: @param menu the Menu Container that was created in the constructSideNavigationComponent() method

      • cmp: the Component to add to the side menu

    • addComponentToSideMenu

      public void addComponentToSideMenu(Component cmp, Command cmd)

      Adds a Component to the left or right side navigation menu, according to the state of RTL. The Component is added to the navigation menu and the command gets the events once the Component is being pressed.

      Parameters
      • cmp: c Component to be added to the menu

      • cmd: a Command to handle the events

    • addMaterialCommandToLeftSideMenu

      public Command addMaterialCommandToLeftSideMenu(String name, char icon, ActionListener ev)

      Adds a Command to the left side navigation menu with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToRightSideMenu

      public Command addMaterialCommandToRightSideMenu(String name, char icon, ActionListener ev)

      Adds a Command to the right side navigation menu with a material design icon reference com.codename1.ui.FontImage (it requires a permanent sidemenu or an onTop mode sidemenu, otherwise it does nothing).

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToSideMenu

      public Command addMaterialCommandToSideMenu(String name, char icon, float size, ActionListener ev)

      Adds a Command to the left or right side navigation menu (according to the state of RTL) with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • size: size in millimeters for the icon

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToSideMenu

      public Command addMaterialCommandToSideMenu(String name, char icon, ActionListener ev)

      Adds a Command to the left or right side navigation menu (according to the state of RTL) with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToLeftSideMenu

      public Command addMaterialCommandToLeftSideMenu(String name, char icon, float size, ActionListener ev)

      Adds a Command to the left side navigation menu with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • size: size in millimeters for the icon

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToRightSideMenu

      public Command addMaterialCommandToRightSideMenu(String name, char icon, float size, ActionListener ev)

      Adds a Command to the right side navigation menu with a material design icon reference com.codename1.ui.FontImage (it requires a permanent sidemenu or an onTop mode sidemenu, otherwise it does nothing).

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • size: size in millimeters for the icon

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToRightBar

      public Command addMaterialCommandToRightBar(String name, char icon, ActionListener ev)

      Adds a Command to the TitleArea on the right side with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToRightBar

      public Command addMaterialCommandToRightBar(String name, char icon, float size, ActionListener ev)

      Adds a Command to the TitleArea on the right side with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • size: size of the icon in millimeters

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToLeftBar

      public Command addMaterialCommandToLeftBar(String name, char icon, ActionListener ev)

      Adds a Command to the TitleArea on the left side with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToLeftBar

      public Command addMaterialCommandToLeftBar(String name, char icon, float size, ActionListener ev)

      Adds a Command to the TitleArea on the left side with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • size: size in millimeters for the icon

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToOverflowMenu

      public Command addMaterialCommandToOverflowMenu(String name, char icon, ActionListener ev)

      Adds a Command to the overflow menu with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addMaterialCommandToOverflowMenu

      public Command addMaterialCommandToOverflowMenu(String name, char icon, float size, ActionListener ev)

      Adds a Command to the overflow menu with a material design icon reference com.codename1.ui.FontImage.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • size: size in millimeters for the icon

      • ev: the even handler

      Returns

      a newly created Command instance

    • addCommandToSideMenu

      public void addCommandToSideMenu(Command cmd)

      Adds a Command to the left or right side navigation menu according to the state of RTL.

      Parameters
      • cmd: a Command
    • addCommandToLeftSideMenu

      public void addCommandToLeftSideMenu(Command cmd)

      Adds a Command to the left side navigation menu

      Parameters
      • cmd: a Command
    • addCommandToRightSideMenu

      public void addCommandToRightSideMenu(Command cmd)

      Adds a Command to the right side navigation menu (it requires a permanent sidemenu or an onTop mode sidemenu, otherwise it does nothing).

      Parameters
      • cmd: a Command
    • getLeftSideMenuButton

      public Button getLeftSideMenuButton()

      Allows runtime manipulation of the side menu button, notice this will only work after the menu was created

      Returns

      a button or null if the menu isn't there yet

    • getRightSideMenuButton

      public Button getRightSideMenuButton()

      Allows runtime manipulation of the side menu button, notice this will only work after the menu was created

      Returns

      a button or null if the menu isn't there yet

    • getOverflowButton

      public Button getOverflowButton()

      Allows runtime manipulation of the overflow button, notice this will only work after the menu was created

      Returns

      a button or null if the menu isn't there yet

    • setComponentToSideMenuSouth

      public void setComponentToSideMenuSouth(Component sidemenuSouthComponent)

      Places a component in the south portion (bottom) of the left side menu. Notice this only works with on-top side menu and the permanent side menu. Setting this value to null will remove the existing component. Only one component can be placed in the south but it can be a container that includes many components

      Parameters
      • sidemenuSouthComponent: @param sidemenuSouthComponent the new component to place in the south or null to remove the current component
    • setComponentToRightSideMenuSouth

      public void setComponentToRightSideMenuSouth(Component sidemenuSouthComponent)

      Places a component in the south portion (bottom) of the right side menu. Notice this only works with on-top side menu and the permanent side menu. Setting this value to null will remove the existing component. Only one component can be placed in the south but it can be a container that includes many components

      Parameters
      • sidemenuSouthComponent: @param sidemenuSouthComponent the new component to place in the south or null to remove the current component
    • addComponentToLeftSideMenu

      public void addComponentToLeftSideMenu(Component cmp, Command cmd)

      Adds a Component to the left side navigation menu. The Component is added to the navigation menu and the command gets the events once the Component is being pressed.

      Parameters
      • cmp: c Component to be added to the menu

      • cmd: a Command to handle the events

    • addComponentToRightSideMenu

      public void addComponentToRightSideMenu(Component cmp, Command cmd)

      Adds a Component to the right side navigation menu (it requires a permanent sidemenu or an onTop sidemenu, otherwise it does nothing). The Component is added to the navigation menu and the command gets the events once the Component is being pressed.

      Parameters
      • cmp: c Component to be added to the menu

      • cmd: a Command to handle the events

    • addComponentToLeftSideMenu

      public void addComponentToLeftSideMenu(Component cmp)

      Adds a Component to the left side navigation menu.

      Parameters
      • cmp: c Component to be added to the menu
    • addComponentToRightSideMenu

      public void addComponentToRightSideMenu(Component cmp)

      Adds a Component to the right side navigation menu (it requires a permanent sidemenu or an onTop sidemenu, otherwise it does nothing).

      Parameters
      • cmp: c Component to be added to the menu
    • findCommandComponent

      public Button findCommandComponent(Command c)

      Find the command component instance if such an instance exists

      Parameters
      • c: the command instance
      Returns

      the button instance

    • addCommandToRightBar

      public Command addCommandToRightBar(String name, Image icon, ActionListener ev)

      Adds a Command to the TitleArea on the right side.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • removeCommand

      public void removeCommand(Command cmd)

      Removes a Command from the MenuBar

      Parameters
      • cmd: Command to remove
    • addCommandToRightBar

      public void addCommandToRightBar(Command cmd)

      Adds a Command to the TitleArea on the right side.

      Parameters
      • cmd: a Command
    • addCommandToLeftBar

      public Command addCommandToLeftBar(String name, Image icon, ActionListener ev)

      Adds a Command to the TitleArea on the left side.

      Parameters
      • name: the name/title of the command

      • icon: the icon for the command

      • ev: the even handler

      Returns

      a newly created Command instance

    • addCommandToLeftBar

      public void addCommandToLeftBar(Command cmd)

      Adds a Command to the TitleArea on the left side.

      Parameters
      • cmd: a Command
    • getRightBarCommands

      public Iterable<Command> getRightBarCommands()

      Returns the commands within the right bar section which can be useful for things like unit testing. Notice that you should not mutate the commands or the iteratable set in any way!

      Returns

      the commands in the overflow menu

    • getLeftBarCommands

      public Iterable<Command> getLeftBarCommands()

      Returns the commands within the left bar section which can be useful for things like unit testing. Notice that you should not mutate the commands or the iteratable set in any way!

      Returns

      the commands in the overflow menu

    • getMenuBar

      public MenuBar getMenuBar()

      Returns the associated SideMenuBar object of this Toolbar.

      Returns

      the associated SideMenuBar object

    • showOverflowMenu

      protected Command showOverflowMenu(Dialog menu)
    • createOverflowCommandList

      protected List createOverflowCommandList(Vector commands)

      Creates the list component containing the commands within the given vector used for showing the menu dialog

      Parameters
      • commands: list of command objects
      Returns

      List object

    • initTitleBarStatus

      protected void initTitleBarStatus()
      Adds a status bar space to the north of the Component, subclasses can override this default behavior.
    • setScrollOffUponContentPane

      public void setScrollOffUponContentPane(boolean scrollOff)

      Sets the Toolbar to scroll off the screen upon content scroll. This feature can only work if the Form contentPane is scrollableY

      Parameters
      • scrollOff: @param scrollOff if true the Toolbar needs to scroll off the screen when the Form ContentPane is scrolled
    • hideToolbar

      public void hideToolbar()
      Hide the Toolbar if it is currently showing
    • showToolbar

      public void showToolbar()
      Show the Toolbar if it is currently not showing
    • animate

      public boolean animate()
      Description copied from class: Component

      Allows the animation to reduce "repaint" calls when it returns false. It is called once for every frame. Frames are defined by the com.codename1.ui.Display class.

      Returns

      true if a repaint is desired or false if no repaint is necessary

      Specified by:
      animate in interface Animation
      Overrides:
      animate in class Component
    • createSideNavigationComponent

      protected Container createSideNavigationComponent(Vector commands, String placement)

      Creates the side navigation component with the Commands.

      Parameters
      • commands: the Command objects
      Returns

      the Component to display on the side navigation

    • constructSideNavigationComponent

      protected Container constructSideNavigationComponent()
      Creates an empty left side navigation panel.
    • constructRightSideNavigationComponent

      protected Container constructRightSideNavigationComponent()
      Creates an empty right side navigation panel.
    • addComponentToLeftSideMenu

      protected void addComponentToLeftSideMenu(Container menu, Component cmp)

      This method responsible to add a Component to the left side navigation panel.

      Parameters
      • menu: @param menu the Menu Container that was created in the constructSideNavigationComponent() method

      • cmp: the Component to add to the side menu

    • addComponentToRightSideMenu

      protected void addComponentToRightSideMenu(Container menu, Component cmp)

      This method responsible to add a Component to the right side navigation panel.

      Parameters
      • menu: @param menu the Menu Container that was created in the constructSideNavigationComponent() method

      • cmp: the Component to add to the side menu

    • getSideMenuCommands

      public Iterable<Command> getSideMenuCommands()

      Returns the commands within the left side menu which can be useful for things like unit testing. Notice that you should not mutate the commands or the iteratable set in any way!

      Returns

      the commands in the left side menu

    • getRightSideMenuCommands

      public Iterable<Command> getRightSideMenuCommands()

      Returns the commands within the right side menu which can be useful for things like unit testing. Notice that you should not mutate the commands or the iteratable set in any way!

      Returns

      the commands in the right side menu

    • removeOverflowCommand

      public void removeOverflowCommand(Command cmd)

      Removes the given overflow menu command, notice that this has no effect on the menu that is currently showing (if it is currently showing) only on the upcoming iterations.

      Parameters
      • cmd: the command to remove from the overflow
    • setRightSideMenuCmdsAlignedToLeft

      public void setRightSideMenuCmdsAlignedToLeft(boolean toLeft)

      Normally on a right side menu the alignment should be "mirrored" in comparision with the left side menu, also for non-RTL languages: this method allows to change this default behaviour for non-RTL languages, forcing the alignment of the Commands of the right side menu to left. Note that for RTL languages this method does nothing. This method should be called before adding commands to the right side menu.

      Parameters
      • toLeft: false is the default, true changes the alignment.