public RobonoboFrame(RobonoboController control, String[] args) {
    this.control = control;
    this.cmdLineArgs = args;

    setTitle("robonobo");
    setIconImage(GUIUtils.getImage("/icon/robonobo-64x64.png"));
    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    addWindowListener(new CloseListener());

    menuBar = Platform.getPlatform().getMenuBar(this);
    setJMenuBar(menuBar);

    JPanel contentPane = new JPanel();
    double[][] cellSizen = {{5, 200, 5, TableLayout.FILL, 5}, {3, TableLayout.FILL, 5}};
    contentPane.setLayout(new TableLayout(cellSizen));
    setContentPane(contentPane);
    leftSidebar = new LeftSidebar(this);
    contentPane.add(leftSidebar, "1,1");
    mainPanel = new MainPanel(this);
    contentPane.add(mainPanel, "3,1");
    setPreferredSize(new Dimension(1024, 723));
    pack();
    leftSidebar.selectMyMusic();
    guiConfig = (GuiConfig) control.getConfig("gui");
    addListeners();
  }
 public void openRbnbUri(String uri) {
   Pattern uriPat = Pattern.compile("^rbnb:(\\w+):(.*)$");
   Matcher m = uriPat.matcher(uri);
   if (m.matches()) {
     String objType = m.group(1);
     String objId = m.group(2);
     if (objType.equalsIgnoreCase("focus")) {
       // Do nothing, arg handler will bring us to front anyway
       return;
     }
     if (objType.equalsIgnoreCase("playlist")) {
       long pId = Long.parseLong(objId, 16);
       leftSidebar.showPlaylist(pId);
       return;
     }
   }
   log.error("Received invalid rbnb uri: " + uri);
 }