public void actionPerformed(ActionEvent e) {
    boolean isOffline = !Main.pref.getBoolean(ConfigKeys.OSB_API_OFFLINE);

    // inform the dialog about the connection mode
    dialog.setConnectionMode(isOffline);

    // set the new value in the preferences
    Main.pref.put(ConfigKeys.OSB_API_OFFLINE, isOffline);

    // toggle the tooltip text
    if (e.getSource() != null && e.getSource() instanceof JToggleButton) {
      JToggleButton button = (JToggleButton) e.getSource();
      if (isOffline) {
        button.setToolTipText(MSG_ONLINE);
        if (Main.pref.getBoolean(ConfigKeys.OSB_BUTTON_LABELS)) {
          button.setText(MSG_ONLINE);
        }
      } else {
        button.setToolTipText(MSG_OFFLINE);
        if (Main.pref.getBoolean(ConfigKeys.OSB_BUTTON_LABELS)) {
          button.setText(MSG_OFFLINE);
        }
      }
    }

    if (!isOffline) {
      if (actionQueue.getSize() == 0) {
        dialog.hideQueuePanel();
        return;
      }

      // if we switch to online mode, ask if the queue should be processed
      int result =
          JOptionPane.showConfirmDialog(
              Main.parent,
              tr("You have unsaved changes in your queue. Do you want to submit them now?"),
              tr("OpenStreetBugs"),
              JOptionPane.YES_NO_OPTION);
      if (result == JOptionPane.YES_OPTION) {
        try {
          actionQueue.processQueue();

          // toggle queue panel visibility, if now error occurred
          dialog.hideQueuePanel();

          // refresh, if the api is enabled
          if (!Main.pref.getBoolean(ConfigKeys.OSB_API_DISABLED)) {
            plugin.updateData();
          }
        } catch (Exception e1) {
          System.err.println("Couldn't process action queue");
          e1.printStackTrace();
        }
      }
    } else {
      dialog.showQueuePanel();
    }
  }
示例#2
0
  @Override
  public List<AbstractButton> getButtons() {
    List<AbstractButton> buttons = new ArrayList<AbstractButton>();
    // JToggleButton and JButton are both javax.swing.AbstractButton

    // Toggle button
    JToggleButton buttonPoint = new JToggleButton();
    buttonPoint.setMargin(new Insets(0, 0, 0, 0));
    buttonPoint.setMinimumSize(new Dimension(16, 16));
    buttonPoint.setToolTipText("Mark reference point");
    try {
      buttonPoint.setIcon(new ImageIcon(StamperPS.class.getResource("icons/markPoint.png")));
    } catch (Exception e) {
      e.printStackTrace();
    }
    buttonPoint.addItemListener(
        new ItemListener() {

          @Override
          public void itemStateChanged(ItemEvent itemEvent) {
            int state = itemEvent.getStateChange();
            if (state == ItemEvent.SELECTED) {
              toggleMarkReferencePoint(true);
            } else {
              toggleMarkReferencePoint(false);
            }
          }
        });
    buttonPoint.setToolTipText("Mark reference point");
    buttonPoint.setMargin(new Insets(0, 0, 0, 0));
    buttonPoint.setMinimumSize(new Dimension(16, 16));
    buttons.add(buttonPoint);
    // Clear Points button
    JButton buttonClearPoints = new JButton();
    buttonClearPoints.setMargin(new Insets(0, 0, 0, 0));
    buttonClearPoints.setMinimumSize(new Dimension(16, 16));
    buttonClearPoints.setToolTipText("Clear marked points");
    try {
      buttonClearPoints.setIcon(
          new ImageIcon(StamperPS.class.getResource("icons/markPointClear.png")));
    } catch (Exception e) {
      e.printStackTrace();
    }
    buttonClearPoints.addActionListener(
        new ActionListener() {

          public void actionPerformed(ActionEvent e) {
            clearMarkedPoints();
          }
        });
    buttons.add(buttonClearPoints);
    return buttons;
  }
示例#3
0
  private void setBreak(boolean isBreak) {
    this.isBreak = isBreak;

    chkTrapRequest.setSelected(isBreak);
    chkTrapResponse.setSelected(isBreak);

    if (isBreak) {
      btnBreak.setIcon(new ImageIcon(getClass().getResource("/resource/icons/delete.png")));
      btnBreak.setToolTipText(Constant.messages.getString("brk.toolbar.button.unset"));
    } else {
      btnBreak.setIcon(new ImageIcon(getClass().getResource("/resource/icons/add.png")));
      btnBreak.setToolTipText(Constant.messages.getString("brk.toolbar.button.set"));
    }
  }
  private void addButtonToPropertySheetPanel() {
    showAllVPButton = new JToggleButton();
    showAllVPButton.setText("Show All");
    showAllVPButton.setToolTipText("Show all Visual Properties");
    showAllVPButton.setSelected(PropertySheetUtil.isAdvancedMode());
    showAllVPButton.setUI(new BlueishButtonUI());

    showAllVPButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent ae) {
            viewModeAction.menuSelected(null);
            viewModeAction.actionPerformed(null);
          }
        });

    // This is a hack: get private component and add button.
    Field[] fields = PropertySheetPanel.class.getDeclaredFields();

    for (Field f : fields) {
      if (f.getName().equals("actionPanel")) {
        f.setAccessible(true);
        try {
          JPanel buttonPanel = (JPanel) f.get(propertySheetPanel);
          buttonPanel.add(showAllVPButton);
        } catch (IllegalArgumentException e) {
          e.printStackTrace();
        } catch (IllegalAccessException e) {
          e.printStackTrace();
        }
      }
    }
  }
示例#5
0
  public static JToggleButton createToolbarCheckBox(
      final Icon icon,
      final String label,
      final boolean initState,
      final ActionListener actionListener) {

    final JToggleButton widget;
    if (icon == null) {
      widget = new JToggleButton(label);
    } else {
      widget = new JToggleButton(icon);
      widget.setToolTipText(label);
    }

    widget.putClientProperty(SubstanceLookAndFeel.FLAT_PROPERTY, Boolean.TRUE);
    widget.putClientProperty(SubstanceLookAndFeel.BUTTON_NO_MIN_SIZE_PROPERTY, Boolean.TRUE);

    if (actionListener != null) {
      widget.addActionListener(actionListener);
    }

    widget.setSelected(initState);

    return widget;
  }
 private JToggleButton createToggleButton(Icon icon, String text) {
   JToggleButton button = new JToggleButton(icon);
   button.setToolTipText(text);
   button.addActionListener(this);
   button.setActionCommand(text);
   return button;
 }
  /**
   * Constructs the button with the given node type and image prefix. If the node type is "Select",
   * constructs a button that allows nodes to be selected and moved. If the node type is "Edge",
   * constructs a button that allows edges to be drawn. For other node types, constructs buttons
   * that allow those type of nodes to be added to the workbench. If a non-null image prefix is
   * provided, images for <prefix>Up.gif, <prefix>Down.gif, <prefix>Off.gif and <prefix>Roll.gif are
   * loaded from the /images directory relative to this compiled class and used to provide up, down,
   * off, and rollover images for the constructed button. On construction, nodes are mapped to their
   * node types in the Map, <code>nodeTypes</code>. Listeners are added to the node.
   *
   * @param buttonInfo contains the info needed to construct the button.
   */
  private JToggleButton constructButton(ButtonInfo buttonInfo) {
    String imagePrefix = buttonInfo.getImagePrefix();

    if (imagePrefix == null) {
      throw new NullPointerException("Image prefix must not be null.");
    }

    JToggleButton button = new JToggleButton();

    button.addMouseListener(
        new MouseAdapter() {
          public void mouseClicked(MouseEvent e) {
            super.mouseClicked(e);
            setShiftDown(e.isShiftDown());
            //                setControlDown(e.isControlDown());
          }
        });

    if ("Select".equals(buttonInfo.getNodeTypeName())) {
      button.setIcon(new ImageIcon(ImageUtils.getImage(this, "move.gif")));
    } else if ("Edge".equals(buttonInfo.getNodeTypeName())) {
      button.setIcon(new ImageIcon(ImageUtils.getImage(this, "flow.gif")));
    } else {
      button.setName(buttonInfo.getNodeTypeName());
      button.setText("<html><center>" + buttonInfo.getDisplayName() + "</center></html>");
    }

    button.setMaximumSize(new Dimension(110, 40)); // For a vertical box.
    button.setToolTipText(buttonInfo.getToolTipText());
    this.nodeTypes.put(button, buttonInfo.getNodeTypeName());

    return button;
  }
示例#8
0
    protected void setup() {
      clear();
      if (model != null) {
        // Add transformers buttons, separate them by element group
        for (String elmtType : AppearanceUIController.ELEMENT_CLASSES) {
          ButtonGroup buttonGroup = new ButtonGroup();
          for (final TransformerCategory c : controller.getCategories(elmtType)) {
            // Build button
            Icon icon = c.getIcon();
            //                        DecoratedIcon decoratedIcon = getDecoratedIcon(icon, t);
            //                        JToggleButton btn = new JToggleButton(decoratedIcon);
            JToggleButton btn = new JToggleButton(icon);

            btn.setToolTipText(c.getDisplayName());
            btn.addActionListener(
                new ActionListener() {
                  @Override
                  public void actionPerformed(ActionEvent e) {
                    controller.setSelectedCategory(c);
                  }
                });
            btn.setName(c.getDisplayName());
            btn.setFocusPainted(false);
            buttonGroup.add(btn);
            add(btn);
          }

          buttonGroups.add(buttonGroup);
        }
      } else {
        elementGroup.clearSelection();
      }
    }
  public void initToolBar() {
    tb = new JToolBar();

    tb.setFloatable(false);

    usezoombt = new JToggleButton("-1", XmippResource.getIcon("zoom.png"));
    usezoombt.setToolTipText("Keep zoom");
    usezoombt.setFocusable(false);
    usezoombt.setSelected(true);
    usezoombt.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(ActionEvent e) {
            if (!usezoombt.isSelected()) getParticlePicker().setZoom(-1);
          }
        });
    tb.add(usezoombt);
    initShapePane();
    tb.add(shapepn);
    initSizePane();
    tb.add(sizepn);
    if (!(this instanceof ExtractPickerJFrame)) {
      initColorPane(getParticlePicker().getColor());
      tb.add(colorpn);
      eraserbt = new JToggleButton(bundle.getString("eraser"), XmippResource.getIcon("eraser.png"));
      tb.add(eraserbt);
    }
  }
 public JToggleButton addToggleButton(String key) {
   JToggleButton item = new JToggleButton();
   item.setToolTipText(Messages.getString(key));
   item.setIcon(LGM.getIconForKey(key));
   item.setActionCommand(key);
   item.addActionListener(this);
   return item;
 }
示例#11
0
 private JToggleButton addToggleButton(Action a) {
   JToggleButton tb = new JToggleButton((String) a.getValue(Action.NAME), null);
   tb.setEnabled(a.isEnabled());
   tb.setToolTipText((String) a.getValue(Action.SHORT_DESCRIPTION));
   tb.setAction(a);
   add(tb);
   return tb;
 }
示例#12
0
  /** Component initialization */
  private void jbInit() throws Exception {
    getContentPane().setLayout(new BorderLayout());
    JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(new FlowLayout());

    mySelectButton.setSelected(true);
    mySelectButton.setToolTipText("Select and move shapes");
    myCircleButton.setToolTipText("Draw a Circle");
    myLineButton.setToolTipText("Draw a Line");

    getContentPane().add(buttonPanel, BorderLayout.NORTH);
    buttonPanel.add(mySelectButton, null);
    buttonPanel.add(myLineButton, null);
    buttonPanel.add(myCircleButton, null);
    getContentPane().add(myDrawingPanel, BorderLayout.CENTER);

    ButtonGroup buttonGroup = new ButtonGroup();
    buttonGroup.add(mySelectButton);
    buttonGroup.add(myLineButton);
    buttonGroup.add(myCircleButton);

    setSize(new Dimension(400, 300));
    setTitle("Simple Draw");

    mySelectButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            myDrawingPanel.activateSelectionTool();
          }
        });

    myLineButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            myDrawingPanel.activateLineTool();
          }
        });

    myCircleButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            myDrawingPanel.activateCircleTool();
          }
        });
  }
  public static JToggleButton getDFlipFlopButton() {

    JToggleButton button = new JToggleButton(DCDUtility.loadIconResource("DFlipFlop"));
    button.setMaximumSize(size);
    button.setActionCommand("DFLIPFLOP");
    button.addItemListener(DCDUtility.getInstance());
    button.setToolTipText("D FLIP-FLOP");
    return (button);
  }
  public static JToggleButton getSevenSegmentDisplayButton() {

    JToggleButton button = new JToggleButton(DCDUtility.loadIconResource("SevenSegmentDisplay"));
    button.setMaximumSize(size);
    button.setActionCommand("SEVENSEGMENTDISPLAY");
    button.addItemListener(DCDUtility.getInstance());
    button.setToolTipText("SEVEN SEGMENT DISPLAY");
    return (button);
  }
  public static JToggleButton getSteadyInputButton() {

    JToggleButton button = new JToggleButton(DCDUtility.loadIconResource("steadyIP"));
    button.setMaximumSize(size);
    button.setActionCommand("STEADY_INPUT");
    button.addItemListener(DCDUtility.getInstance());
    button.setToolTipText("STEADY_INPUT");
    return (button);
  }
  public static JToggleButton getLEDButton() {

    JToggleButton button = new JToggleButton(DCDUtility.loadIconResource("led"));
    button.setMaximumSize(size);
    button.setActionCommand("LED");
    button.addItemListener(DCDUtility.getInstance());
    button.setToolTipText("LED");
    return (button);
  }
  public static JToggleButton getToggleButton(
      String iconResource, String actionCommand, String tooltipText) {

    JToggleButton button = new JToggleButton(DCDUtility.loadIconResource(iconResource));
    button.setMaximumSize(size);
    button.setActionCommand(actionCommand);
    button.addItemListener(DCDUtility.getInstance());
    button.setToolTipText(tooltipText);
    return (button);
  }
示例#18
0
 private JToggleButton createButton(Container container, String tip) {
   final JToggleButton btn = new JToggleButton();
   btn.setPreferredSize(new Dimension(40, 40));
   btn.setBorder(new EmptyBorder(2, 2, 2, 2));
   btn.setOpaque(true);
   btn.setToolTipText(tip);
   addMouseListener(btn);
   container.add(btn);
   return btn;
 }
示例#19
0
  private Component buildToolbar() {
    JXToolBar toolbar = UISupport.createSmallToolbar();

    JToggleButton toggleButton = new JToggleButton(new TogglePropertiesAction());
    toggleButton.setToolTipText("Toggles displaying of Test Properties in tree");
    toggleButton.setSize(10, 12);
    toolbar.addFixed(toggleButton);
    toolbar.addGlue();

    return toolbar;
  }
示例#20
0
 JToggleButton addDecoderIdentButton() {
   JToggleButton iddecoder = new JToggleButton(Bundle.getMessage("ButtonReadType"));
   iddecoder.setToolTipText(Bundle.getMessage("TipSelectType"));
   if (jmri.InstanceManager.getNullableDefault(jmri.ProgrammerManager.class) != null
       && jmri.InstanceManager.getDefault(jmri.ProgrammerManager.class).getGlobalProgrammer()
           != null
       && !jmri.InstanceManager.getDefault(jmri.ProgrammerManager.class)
           .getGlobalProgrammer()
           .getCanRead()) {
     // can't read, disable the button
     iddecoder.setEnabled(false);
     iddecoder.setToolTipText(Bundle.getMessage("TipNoRead"));
   }
   iddecoder.addActionListener(
       new ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent e) {
           startIdentifyDecoder();
         }
       });
   return iddecoder;
 }
示例#21
0
 /**
  * Creates a diminutive toggle button used for selecting the message type
  *
  * @param title the title of the button
  * @param icon the icon to use
  * @param selected whether the button is selected or not
  * @param group the group to add the button to
  * @return the instantiated button
  */
 private JToggleButton createMessageTypeButton(
     String title, ImageIcon icon, boolean selected, ButtonGroup group) {
   JToggleButton button = new JToggleButton(icon);
   group.add(button);
   button.setSelected(selected);
   button.setToolTipText(title);
   button.setFocusable(false);
   button.setFocusPainted(false);
   button.addActionListener(this);
   button.setPreferredSize(new Dimension(18, 18));
   return button;
 }
示例#22
0
 /**
  * This method initializes jToggleButton
  *
  * @return javax.swing.JToggleButton
  */
 private JToggleButton getJToggleButton() {
   if (jToggleButton == null) {
     jToggleButton = new JToggleButton();
     jToggleButton.setToolTipText("switch mode");
     jToggleButton.setIcon(ICON_SWITCH_MODE);
     jToggleButton.addActionListener(
         new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent e) {
             getJTextPane().setEditable(!getJTextPane().isEditable());
             if (getJTextPane().isEditable()) {
               getJTextPane().requestFocusInWindow();
             }
           }
         });
   }
   return jToggleButton;
 }
  public void addColorChooserPanel(final AbstractColorChooserPanel ccp) {
    final String displayName = ccp.getDisplayName();
    if (displayName == null) {
      // Return if we haven't initialized yet
      return;
    }

    if (ccp.getClass()
        .getName()
        .equals("ch.randelshofer.quaqua.colorchooser.Quaqua15ColorPicker")) {
      northPanel.add(ccp, BorderLayout.WEST);
    } else {
      Icon displayIcon = ccp.getLargeDisplayIcon();
      JToggleButton tb = new JToggleButton(null, displayIcon);
      tb.setToolTipText(displayName);
      tb.setFocusable(false);
      tb.setHorizontalTextPosition(SwingConstants.CENTER);
      tb.setVerticalTextPosition(SwingConstants.BOTTOM);
      tb.setFont(UIManager.getFont("ColorChooser.font"));
      tb.putClientProperty("Quaqua.Button.style", "toolBarTab");
      JPanel centerView = new JPanel(new BorderLayout());
      centerView.add(ccp);
      chooserPanelHolder.add(centerView, displayName);
      toolBarButtonGroup.add(tb);
      toolBar.add(tb);

      if (toolBar.getComponentCount() == 1
          || lastSelectedChooserName != null && lastSelectedChooserName.equals(displayName)) {
        tb.setSelected(true);
        CardLayout cl = (CardLayout) chooserPanelHolder.getLayout();
        cl.show(chooserPanelHolder, displayName);
      }

      tb.addItemListener(
          new ItemListener() {
            public void itemStateChanged(ItemEvent evt) {
              if (evt.getStateChange() == ItemEvent.SELECTED) {
                CardLayout cl = (CardLayout) chooserPanelHolder.getLayout();
                cl.show(chooserPanelHolder, displayName);
                lastSelectedChooserName = displayName;
              }
            }
          });
    }
  }
示例#24
0
  private void initToolbar() {
    JToolBar tbTraceFilters = new JToolBar();
    tbTraceFilters.setFloatable(false);
    tbTraceFilters.setRollover(true);

    tbTraceFilters.add(new JLabel("Min time:"));
    txtMinTime = new JTextField(4);
    tbTraceFilters.add(txtMinTime);

    JButton btnFilterByTime = new JButton(new FilterByTimeAction());
    btnFilterByTime.setFocusable(false);
    btnFilterByTime.setToolTipText("Filter by trace execution time");
    tbTraceFilters.add(btnFilterByTime);

    tbTraceFilters.addSeparator();

    btnFilterErrors = new JToggleButton(new FilterByErrorAction());
    btnFilterErrors.setFocusable(false);
    btnFilterErrors.setToolTipText("Show only traces with errors");
    tbTraceFilters.add(btnFilterErrors);

    tbTraceFilters.addSeparator();

    cmbTraceType = new JComboBox();
    cmbTraceType.addItem("*");

    cmbTraceType.addItemListener(
        new ItemListener() {
          @Override
          public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.SELECTED) {
              String item = (String) e.getItem();
              traceLabel = "*".equals(item) ? null : item;
              tbmTraces.setDataSet(dataSet, traceFilter);
            }
          }
        });

    tbTraceFilters.add(cmbTraceType);

    add(tbTraceFilters, BorderLayout.NORTH);
  }
示例#25
0
  public PaintBar(Tool tool) {
    bg = new ButtonGroup();
    this.tool = tool;

    setLayout(new GridLayout(0, 2));

    Listener listener = new Listener();
    for (Button b : interactButtons) {
      JToggleButton button =
          new JToggleButton(
              new ImageIcon(getClass().getResource("/gfx/" + b.tool.toolName + ".png")));
      button.setToolTipText(b.tooltip);
      button.addActionListener(listener);
      button.setActionCommand(b.tool.toolName);
      button.setMargin(new Insets(2, 2, 2, 2));
      if (b.tool == tool) {
        button.setSelected(true);
      }
      bg.add(button);
      add(button);
    }
  }
示例#26
0
    protected void setup() {
      clear();
      if (model != null) {

        for (String elmtType : AppearanceUIController.ELEMENT_CLASSES) {
          for (TransformerCategory c : controller.getCategories(elmtType)) {

            ButtonGroup buttonGroup = new ButtonGroup();
            Map<String, TransformerUI> titles = new LinkedHashMap<String, TransformerUI>();
            for (TransformerUI t : controller.getTransformerUIs(elmtType, c)) {
              titles.put(t.getDisplayName(), t);
            }

            for (Map.Entry<String, TransformerUI> entry : titles.entrySet()) {
              // Build button
              final TransformerUI value = entry.getValue();
              Icon icon = entry.getValue().getIcon();
              //                        DecoratedIcon decoratedIcon = getDecoratedIcon(icon, t);
              //                        JToggleButton btn = new JToggleButton(decoratedIcon);
              JToggleButton btn = new JToggleButton(icon);
              btn.setToolTipText(entry.getValue().getDescription());
              btn.addActionListener(
                  new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                      controller.setSelectedTransformerUI(value);
                    }
                  });
              btn.setName(entry.getKey());
              btn.setText(entry.getKey());
              btn.setFocusPainted(false);
              buttonGroup.add(btn);
              add(btn);
            }
            buttonGroups.add(buttonGroup);
          }
        }
      }
    }
示例#27
0
 private JToggleButton createButton(
     final String icon, final String offIcon, final OptionPanel panel, String tooltip) {
   final JToggleButton button = new JToggleButton();
   button.setToolTipText(tooltip);
   button.addActionListener(
       new ActionListener() {
         public void actionPerformed(ActionEvent e) {
           if (button.isSelected()) {
             panel.activate();
             ((CardLayout) optionPanel.getLayout()).show(optionPanel, icon);
           }
         }
       });
   try {
     button.setIcon(new ImageIcon(ImageUtil.getImage(offIcon)));
     button.setSelectedIcon(new ImageIcon(ImageUtil.getImage(icon)));
   } catch (IOException ioe) {
     ioe.printStackTrace();
   }
   optionPanel.add(panel, icon);
   buttonGroup.add(button);
   return button;
 }
示例#28
0
  private void addResultTable(
      final String sql, long duration, final StatementExecutionResultSetResult resultSetResult) {
    int rowCount = resultSetResult.getRowCount();
    JPanel resultPane = addResultPane();
    final JLabel label = new JLabel(" " + rowCount + " rows");
    FlowLayout flowLayout = new FlowLayout(FlowLayout.LEFT, 0, 0);
    flowLayout.setAlignOnBaseline(true);
    JPanel statusPane = new JPanel(flowLayout);
    statusPane.setOpaque(false);
    if (rowCount <= resultSetResult.getRetainParsedRSDataRowCountThreshold()) {
      final JTableX table = new ResultTable(resultSetResult);
      JTableHeader tableHeader =
          new JTableHeader(table.getColumnModel()) {
            @Override
            public String getToolTipText(MouseEvent e) {
              int col = getTable().convertColumnIndexToModel(columnAtPoint(e.getPoint()));
              return col == 0 ? null : resultSetResult.getTypeInfos()[col - 1].toString();
            }
          };
      ToolTipManager.sharedInstance().registerComponent(tableHeader);
      table.setTableHeader(tableHeader);
      table.setDefaultRenderer(
          String.class,
          new DefaultTableCellRenderer() {
            @Override
            public Component getTableCellRendererComponent(
                JTable table,
                Object value,
                boolean isSelected,
                boolean hasFocus,
                int row,
                int column) {
              if (value != null) {
                value = "\"" + value + "\"";
              }
              return super.getTableCellRendererComponent(
                  table, value, isSelected, hasFocus, row, column);
            }
          });
      final TableCellRenderer booleanRenderer = table.getDefaultRenderer(Boolean.class);
      table.setDefaultRenderer(
          Boolean.class,
          new DefaultTableCellRenderer() {
            @Override
            public Component getTableCellRendererComponent(
                JTable table,
                Object value,
                boolean isSelected,
                boolean hasFocus,
                int row,
                int column) {
              Component c = null;
              if (value == null) {
                c =
                    super.getTableCellRendererComponent(
                        table, " ", isSelected, hasFocus, row, column);
              } else {
                c =
                    booleanRenderer.getTableCellRendererComponent(
                        table, value, isSelected, hasFocus, row, column);
              }
              if (!isSelected) {
                c.setBackground(
                    row % 2 == 0
                        ? UIManager.getColor("Table.background")
                        : JTableX.getTableAlternateRowBackgroundColor());
              }
              return c;
            }
          });
      table.setDefaultRenderer(
          Timestamp.class,
          new DefaultTableCellRenderer() {
            @SuppressWarnings("deprecation")
            @Override
            public Component getTableCellRendererComponent(
                JTable table,
                Object value,
                boolean isSelected,
                boolean hasFocus,
                int row,
                int column) {
              Component c =
                  super.getTableCellRendererComponent(
                      table, value, isSelected, hasFocus, row, column);
              if (value != null && c instanceof JLabel) {
                Timestamp timestamp = (Timestamp) value;
                String s;
                if (timestamp.getHours() != 0
                    || timestamp.getMinutes() != 0
                    || timestamp.getSeconds() != 0) {
                  s = Utils.formatDateTimeGMT((Timestamp) value);
                } else {
                  s = Utils.formatDateGMT((Timestamp) value);
                }
                ((JLabel) c).setText(s);
              }
              return c;
            }
          });
      table.setDefaultRenderer(
          byte[].class,
          new DefaultTableCellRenderer() {
            @Override
            public Component getTableCellRendererComponent(
                JTable table,
                Object value,
                boolean isSelected,
                boolean hasFocus,
                int row,
                int column) {
              Component c =
                  super.getTableCellRendererComponent(
                      table, value, isSelected, hasFocus, row, column);
              if (value != null && c instanceof JLabel) {
                byte[] bytes = (byte[]) value;
                ((JLabel) c).setText("Blob (" + bytes.length + " bytes)");
              }
              return c;
            }
          });
      table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
      table.setAutoCreateRowSorter(true);
      table
          .getRowSorter()
          .setSortKeys(Arrays.asList(new RowSorter.SortKey(0, SortOrder.ASCENDING)));
      table.setColumnSelectionAllowed(true);
      table.applyMinimumAndPreferredColumnSizes(200);
      resultPane.add(new JScrollPane(table), BorderLayout.CENTER);
      table
          .getSelectionModel()
          .addListSelectionListener(
              new ListSelectionListener() {
                @Override
                public void valueChanged(ListSelectionEvent e) {
                  int selectedRowCount = table.getSelectedRowCount();
                  label.setText(
                      " "
                          + resultSetResult.getRowData().length
                          + " rows"
                          + (selectedRowCount == 0
                              ? ""
                              : " - " + selectedRowCount + " selected rows"));
                }
              });
      table.addMouseListener(
          new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
              int row = table.rowAtPoint(e.getPoint());
              int column = table.columnAtPoint(e.getPoint());
              if (!table.isCellSelected(row, column)) {
                table.changeSelection(row, column, false, false);
              }
              maybeShowPopup(e);
            }

            @Override
            public void mouseReleased(MouseEvent e) {
              maybeShowPopup(e);
            }

            private void maybeShowPopup(MouseEvent e) {
              if (!e.isPopupTrigger()) {
                return;
              }
              boolean isEditable = resultSetResult.isEditable();
              JPopupMenu menu = new JPopupMenu();
              int selectedRowCount = table.getSelectedRowCount();
              int selectedColumnCount = table.getSelectedColumnCount();
              boolean isAddingSeparator = false;
              // Here to add custom menus.
              if (isEditable) {
                if (isAddingSeparator) {
                  isAddingSeparator = false;
                  menu.addSeparator();
                }
                JMenuItem insertNullMenuItem = new JMenuItem("Insert NULL");
                insertNullMenuItem.addActionListener(
                    new ActionListener() {
                      @Override
                      public void actionPerformed(ActionEvent e) {
                        int row = table.getSelectedRow();
                        int column = table.getSelectedColumn();
                        table.setValueAt(null, row, column);
                      }
                    });
                insertNullMenuItem.setEnabled(
                    selectedRowCount == 1
                        && selectedColumnCount == 1
                        && table.convertColumnIndexToModel(table.getSelectedColumn()) != 0);
                menu.add(insertNullMenuItem);
                menu.addSeparator();
                JMenuItem deleteRowMenuItem =
                    new JMenuItem(
                        "Delete " + (selectedRowCount > 1 ? selectedRowCount + " rows" : "row"));
                deleteRowMenuItem.addActionListener(
                    new ActionListener() {
                      @Override
                      public void actionPerformed(ActionEvent e) {
                        int[] selectedRows = table.getSelectedRows();
                        for (int i = selectedRows.length - 1; i >= 0; i--) {
                          selectedRows[i] = table.convertRowIndexToModel(selectedRows[i]);
                        }
                        Arrays.sort(selectedRows);
                        for (int i = selectedRows.length - 1; i >= 0; i--) {
                          int row = selectedRows[i];
                          boolean isSuccess = resultSetResult.deleteRow(row);
                          if (isSuccess) {
                            ((AbstractTableModel) table.getModel()).fireTableRowsDeleted(row, row);
                          }
                        }
                      }
                    });
                deleteRowMenuItem.setEnabled(selectedRowCount > 0);
                menu.add(deleteRowMenuItem);
              }
              if (menu.getComponentCount() > 0) {
                menu.show(e.getComponent(), e.getX(), e.getY());
              }
            }
          });
      final JPanel filterPane = new JPanel(flowLayout);
      filterPane.setOpaque(false);
      final JToggleButton filterToggleButton =
          new JToggleButton(
              new ImageIcon(
                  getClass().getResource("/org/jooq/debug/console/resources/Search16.png")));
      filterToggleButton.setOpaque(false);
      filterToggleButton.setToolTipText(
          "Filter ("
              + KeyEvent.getKeyModifiersText(InputEvent.CTRL_MASK)
              + "+"
              + KeyEvent.getKeyText(KeyEvent.VK_F)
              + ")");
      filterToggleButton.setMargin(new Insets(0, 0, 0, 0));
      filterPane.add(filterToggleButton);
      final JTextField searchField = new JTextField(7);
      searchField
          .getDocument()
          .addDocumentListener(
              new DocumentListener() {
                @Override
                public void removeUpdate(DocumentEvent e) {
                  adjustFilter();
                }

                @Override
                public void insertUpdate(DocumentEvent e) {
                  adjustFilter();
                }

                @Override
                public void changedUpdate(DocumentEvent e) {
                  adjustFilter();
                }

                private void adjustFilter() {
                  setFilter(table, searchField.getText());
                }
              });
      searchField.setVisible(false);
      filterPane.add(searchField);
      filterToggleButton.addItemListener(
          new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
              boolean isActive = e.getStateChange() == ItemEvent.SELECTED;
              searchField.setVisible(isActive);
              if (isActive) {
                searchField.requestFocus();
              } else {
                searchField.setText("");
                table.requestFocus();
              }
              filterPane.revalidate();
              filterPane.repaint();
            }
          });
      searchField.addKeyListener(
          new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
              if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
                e.consume();
                filterToggleButton.setSelected(false);
              } else if (e.getKeyCode() == KeyEvent.VK_F && e.isControlDown()) {
                filterToggleButton.setSelected(false);
              }
            }
          });
      table.addKeyListener(
          new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
              if (e.getKeyCode() == KeyEvent.VK_F && e.isControlDown()) {
                e.consume();
                filterToggleButton.setSelected(true);
                searchField.requestFocus();
                searchField.selectAll();
              }
            }
          });
      statusPane.add(filterPane);
    }
    JPanel southResultPanel = new JPanel(new BorderLayout());
    southResultPanel.setOpaque(false);
    if (isUsingMaxRowCount && rowCount == MAX_ROW_COUNT) {
      label.setForeground(Color.RED);
    }
    statusPane.add(label);
    southResultPanel.add(statusPane, BorderLayout.WEST);
    southResultPanel.add(
        new JLabel(
            Utils.formatDuration(duration)
                + " - "
                + Utils.formatDuration(resultSetResult.getResultSetParsingDuration())),
        BorderLayout.EAST);
    resultPane.add(southResultPanel, BorderLayout.SOUTH);
    southResultPanel.setToolTipText(sql);
    resultPane.revalidate();
    resultPane.repaint();
  }
示例#29
0
  /** Initialize the contents of the frame. */
  private void initialize() {
    frmWow = new JFrame();
    frmWow.setIconImage(
        Toolkit.getDefaultToolkit().getImage(Wow.class.getResource("/org/wowdoge/doge.png")));
    frmWow.addWindowListener(
        new WindowAdapter() {
          @Override
          public void windowOpened(WindowEvent arg0) {
            try {
              if (coreWallet.getWalletFilePath() == null) {
                DialogStart d = new DialogStart();
                d.setLocationRelativeTo(frmWow);
                if (d.showDialog()) {
                  String path = d.getWalletFilePath();
                  File f = new File(path);
                  coreWallet.run(f.getParentFile(), f.getName());
                  mnRecent.addFileToFileHistory(path);
                  mnRecent.storeToPreferences();
                } else {
                  System.exit(0);
                }
              } else coreWallet.run();
            } catch (Exception e) {
              JOptionPane.showMessageDialog(
                  null,
                  "Failed to open wallet.\nDetails:\n" + e.getMessage(),
                  "Error",
                  JOptionPane.ERROR_MESSAGE);
              try {
                coreWallet.stop();
              } finally {
                System.exit(1);
              }
              // Improve!
              // e.printStackTrace();
            }
          }

          @Override
          public void windowClosing(WindowEvent e) {
            try {
              coreWallet.stop();
            } catch (Exception e1) {
              JOptionPane.showMessageDialog(
                  null, e1.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
          }
        });
    frmWow.setTitle("Wow - Doge Wallet");
    frmWow.setBounds(100, 100, 819, 503);
    frmWow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frmWow.getContentPane().setLayout(new BorderLayout(0, 0));

    tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    frmWow.getContentPane().add(tabbedPane, BorderLayout.CENTER);

    JPanel panelWallet = new JPanel();
    tabbedPane.addTab("Wallet", null, panelWallet, null);
    panelWallet.setLayout(new BorderLayout(0, 0));

    JSplitPane splitPaneWallet = new JSplitPane();
    panelWallet.add(splitPaneWallet, BorderLayout.CENTER);

    JPanel panelAddresses = new JPanel();
    panelAddresses.setMinimumSize(new Dimension(200, 10));
    panelAddresses.setPreferredSize(new Dimension(280, 10));
    splitPaneWallet.setLeftComponent(panelAddresses);
    panelAddresses.setLayout(new BorderLayout(0, 0));

    JScrollPane scrollPaneAddresses = new JScrollPane();
    scrollPaneAddresses.setAutoscrolls(true);
    panelAddresses.add(scrollPaneAddresses, BorderLayout.CENTER);

    listAddresses = new JList();
    listAddresses.addListSelectionListener(
        new ListSelectionListener() {
          public void valueChanged(ListSelectionEvent arg0) {
            refreshAddressAndQRCode();
          }
        });
    scrollPaneAddresses.setViewportView(listAddresses);

    JToolBar toolBarAddresses = new JToolBar();
    panelAddresses.add(toolBarAddresses, BorderLayout.NORTH);

    JButton btnNewAddress = new JButton("New Address");
    btnNewAddress.setToolTipText("Create new wallet address for receiving coins");
    btnNewAddress.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
            coreWallet.createNewKeys(1);
            System.out.println(coreWallet.getKeys());
          }
        });
    btnNewAddress.setActionCommand("");
    toolBarAddresses.add(btnNewAddress);

    JButton btnNewAddresses = new JButton("Create Multiple");
    btnNewAddresses.setToolTipText("Create multiple wallet addresses for receiving coins");
    btnNewAddresses.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            DialogAddress dialog = new DialogAddress();
            dialog.setLocationRelativeTo(frmWow);
            if (dialog.showDialog()) {
              int number = dialog.getNumberOfAddressToCreate();
              coreWallet.createNewKeys(number);
              System.out.println(coreWallet.getKeys());
            }
          }
        });
    toolBarAddresses.add(btnNewAddresses);

    JSplitPane splitPaneAddressAndTransactoions = new JSplitPane();
    splitPaneAddressAndTransactoions.setOrientation(JSplitPane.VERTICAL_SPLIT);
    splitPaneWallet.setRightComponent(splitPaneAddressAndTransactoions);

    JPanel panelAddress = new JPanel();
    panelAddress.setPreferredSize(new Dimension(10, 100));
    splitPaneAddressAndTransactoions.setLeftComponent(panelAddress);
    panelAddress.setLayout(new BorderLayout(0, 0));

    JPanel panelDogeQRMain = new JPanel();
    panelDogeQRMain.setPreferredSize(new Dimension(240, 120));
    panelAddress.add(panelDogeQRMain, BorderLayout.CENTER);
    panelDogeQRMain.setLayout(new BorderLayout(0, 0));

    JPanel panelDogeQR = new JPanel();
    panelDogeQRMain.add(panelDogeQR);

    btnDoge = new JButton("");
    btnDoge.addComponentListener(
        new ComponentAdapter() {
          @Override
          public void componentResized(ComponentEvent e) {
            int min =
                btnDoge.getWidth() > btnDoge.getHeight() ? btnDoge.getHeight() : btnDoge.getWidth();
            min = (int) (min * 0.9);
            // System.out.println("RESIZED");
            btnDoge.setIcon(
                new ImageIcon(
                    new ImageIcon(Wow.class.getResource("/org/wowdoge/doge.png"))
                        .getImage()
                        .getScaledInstance(min, min, Image.SCALE_SMOOTH)));
          }
        });
    btnDoge.setToolTipText("Send payment");
    btnDoge.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
            tabbedPane.setSelectedComponent(panelAddressBook);
          }
        });
    panelDogeQR.setLayout(new GridLayout(0, 2, 0, 0));
    panelDogeQR.add(btnDoge);
    btnDoge.setIcon(new ImageIcon(Wow.class.getResource("/org/wowdoge/doge.png")));
    btnDoge.setSize(new Dimension(500, 500));
    btnDoge.setAlignmentX(Component.CENTER_ALIGNMENT);
    btnDoge.setMaximumSize(new Dimension(500, 500));
    btnDoge.setMinimumSize(new Dimension(120, 120));
    btnDoge.setPreferredSize(new Dimension(200, 200));

    btnQRCode = new JButton("");
    btnQRCode.addComponentListener(
        new ComponentAdapter() {
          @Override
          public void componentResized(ComponentEvent arg0) {
            String address = (String) listAddresses.getSelectedValue();
            // System.out.println("Addres:" + address);
            if (address != null) {
              txtAddress.setText(address);
              btnQRCode.setIcon(
                  new ImageIcon(new QRImage(address, btnQRCode.getWidth(), btnQRCode.getHeight())));
            }
          }
        });
    btnQRCode.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {}
        });
    btnQRCode.setToolTipText("Request payment");
    panelDogeQR.add(btnQRCode);
    btnQRCode.setSize(new Dimension(120, 120));
    btnQRCode.setAlignmentX(Component.CENTER_ALIGNMENT);
    btnQRCode.setMinimumSize(new Dimension(120, 120));
    btnQRCode.setMaximumSize(new Dimension(500, 500));
    btnQRCode.setPreferredSize(new Dimension(200, 200));

    JPanel panelAddressNameBalance = new JPanel();
    panelAddress.add(panelAddressNameBalance, BorderLayout.NORTH);
    panelAddressNameBalance.setLayout(new BoxLayout(panelAddressNameBalance, BoxLayout.Y_AXIS));

    JLabel lblReceivingAddress = new JLabel(" Receiving Address:");
    lblReceivingAddress.setPreferredSize(new Dimension(59, 30));
    lblReceivingAddress.setAlignmentX(Component.CENTER_ALIGNMENT);
    panelAddressNameBalance.add(lblReceivingAddress);

    JPanel panel_1 = new JPanel();
    panelAddressNameBalance.add(panel_1);
    panel_1.setLayout(new BoxLayout(panel_1, BoxLayout.X_AXIS));

    txtAddress = new JTextField();
    txtAddress.setPreferredSize(new Dimension(14, 30));
    panel_1.add(txtAddress);
    txtAddress.setFont(new Font("Lucida Grande", Font.PLAIN, 18));
    txtAddress.setHorizontalAlignment(SwingConstants.CENTER);
    txtAddress.setBackground(SystemColor.window);
    txtAddress.setEditable(false);
    txtAddress.setColumns(10);

    JPanel panel_2 = new JPanel();
    panel_2.setVisible(false);
    panelAddressNameBalance.add(panel_2);
    panel_2.setLayout(new BoxLayout(panel_2, BoxLayout.X_AXIS));

    JLabel lblDescription = new JLabel(" Name:");
    lblDescription.setPreferredSize(new Dimension(55, 16));
    panel_2.add(lblDescription);

    txtName = new JTextField();
    panel_2.add(txtName);
    txtName.setFont(new Font("Lucida Grande", Font.PLAIN, 16));
    txtName.setText("Donation");
    txtName.setHorizontalAlignment(SwingConstants.CENTER);
    txtName.setBackground(Color.WHITE);
    txtName.setColumns(10);

    JPanel panel_3 = new JPanel();
    panel_3.setVisible(false);
    panelAddressNameBalance.add(panel_3);
    panel_3.setLayout(new BoxLayout(panel_3, BoxLayout.X_AXIS));

    JLabel lblBalance = new JLabel(" Balance:");
    lblBalance.setPreferredSize(new Dimension(55, 16));
    panel_3.add(lblBalance);

    txtBalance = new JTextField();
    panel_3.add(txtBalance);
    txtBalance.setFont(new Font("Lucida Grande", Font.PLAIN, 15));
    txtBalance.setText("NA");
    txtBalance.setHorizontalAlignment(SwingConstants.CENTER);
    txtBalance.setBackground(SystemColor.window);
    txtBalance.setEditable(false);
    txtBalance.setColumns(10);

    JLabel lblDoge = new JLabel("DOGE");
    lblDoge.setPreferredSize(new Dimension(40, 16));
    panel_3.add(lblDoge);

    JPanel panelReceivedSent = new JPanel();
    panelReceivedSent.setVisible(false);
    panelAddress.add(panelReceivedSent, BorderLayout.SOUTH);
    panelReceivedSent.setLayout(new GridLayout(0, 1, 0, 0));

    JPanel panelReceived = new JPanel();
    panelReceivedSent.add(panelReceived);
    panelReceived.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

    JLabel labelReceived = new JLabel("Received:");
    labelReceived.setHorizontalAlignment(SwingConstants.CENTER);
    labelReceived.setFont(new Font("Lucida Grande", Font.PLAIN, 13));
    panelReceived.add(labelReceived);

    txtReceived = new JTextField();
    txtReceived.setText("NA");
    txtReceived.setHorizontalAlignment(SwingConstants.CENTER);
    txtReceived.setFont(new Font("Lucida Grande", Font.PLAIN, 13));
    txtReceived.setEditable(false);
    txtReceived.setColumns(10);
    txtReceived.setBackground(SystemColor.window);
    panelReceived.add(txtReceived);

    JLabel lblDogeReceived = new JLabel("DOGE");
    panelReceived.add(lblDogeReceived);

    JPanel panelSent = new JPanel();
    panelReceivedSent.add(panelSent);
    panelSent.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

    JLabel labelSent = new JLabel("Sent:");
    labelSent.setPreferredSize(new Dimension(59, 16));
    labelSent.setHorizontalAlignment(SwingConstants.CENTER);
    labelSent.setFont(new Font("Lucida Grande", Font.PLAIN, 13));
    panelSent.add(labelSent);

    txtSent = new JTextField();
    txtSent.setText("NA");
    txtSent.setHorizontalAlignment(SwingConstants.CENTER);
    txtSent.setFont(new Font("Lucida Grande", Font.PLAIN, 13));
    txtSent.setEditable(false);
    txtSent.setColumns(10);
    txtSent.setBackground(SystemColor.window);
    panelSent.add(txtSent);

    JLabel lblDogeSent = new JLabel("DOGE");
    panelSent.add(lblDogeSent);

    JTable tableAddressTransactions = new JTable();
    tableAddressTransactions.setVisible(false);
    splitPaneAddressAndTransactoions.setRightComponent(tableAddressTransactions);

    panelTransactions = new JPanel();
    tabbedPane.addTab("Transactions", null, panelTransactions, null);
    panelTransactions.setLayout(new BorderLayout(0, 0));

    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setAutoscrolls(true);
    panelTransactions.add(scrollPane, BorderLayout.CENTER);

    tableTransactions = new JTable();
    tableTransactions.setRowHeight(30);
    tableTransactions.setAutoscrolls(true);
    tableTransactions.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    tableTransactions.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    scrollPane.setViewportView(tableTransactions);

    panelAddressBook = new JPanel();
    tabbedPane.addTab("Address Book", null, panelAddressBook, null);
    panelAddressBook.setLayout(new BorderLayout(0, 0));

    JScrollPane scrollPaneAddressBook = new JScrollPane();
    panelAddressBook.add(scrollPaneAddressBook, BorderLayout.CENTER);

    tableAddressBook = new JTable();
    tableAddressBook.addMouseListener(
        new MouseAdapter() {
          @Override
          public void mouseClicked(MouseEvent arg0) {
            if (arg0.getClickCount() == 2) {
              JTable target = (JTable) arg0.getSource();
              int row = target.getSelectedRow();
              // int column = target.getSelectedColumn();
              if (row != -1) {
                Contact c = addressBookTableModel.getAddressBook().getContacts().get(row);
                send(c.getAddress(), c.getAmount());
              }
            }
          }
        });
    tableAddressBook.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    tableAddressBook.setRowHeight(25);
    scrollPaneAddressBook.setViewportView(tableAddressBook);

    JToolBar toolBarAddressbook = new JToolBar();
    panelAddressBook.add(toolBarAddressbook, BorderLayout.NORTH);

    JButton btnNewRecipient = new JButton("New");
    btnNewRecipient.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
            DialogContact d = new DialogContact();
            d.setLocationRelativeTo(frmWow);
            d.edit(false);
            d.setNetworkParameters(coreWallet.getNetworkParameters());
            if (d.showDialog()) {
              Contact c =
                  new Contact(d.getName(), d.getAddress(), d.getDescription(), d.getAmount());
              addressBookTableModel.getAddressBook().addContact(c);
              addressBookTableModel.getAddressBook().sort();

              try {
                addressBookTableModel.getAddressBook().save();
              } catch (IOException e1) {
                e1.printStackTrace();
                JOptionPane.showMessageDialog(
                    frmWow,
                    e1.getMessage(),
                    "Error During Address Book Save",
                    JOptionPane.ERROR_MESSAGE);
              } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
                JOptionPane.showMessageDialog(
                    frmWow,
                    e1.getMessage(),
                    "Error During Address Book Save",
                    JOptionPane.ERROR_MESSAGE);
              } catch (BackingStoreException e1) {
                e1.printStackTrace();
                JOptionPane.showMessageDialog(
                    frmWow,
                    e1.getMessage(),
                    "Error During Address Book Save",
                    JOptionPane.ERROR_MESSAGE);
              }
              addressBookTableModel.fireTableDataChanged();
            }
          }
        });
    btnNewRecipient.setToolTipText("New address template to send payments to");
    toolBarAddressbook.add(btnNewRecipient);

    JButton btnEdit = new JButton("Edit");
    btnEdit.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            DialogContact d = new DialogContact();
            d.setLocationRelativeTo(frmWow);
            d.edit(true);
            int index = tableAddressBook.getSelectedRow();
            if (index != -1) {
              d.setNetworkParameters(coreWallet.getNetworkParameters());
              Contact c = addressBookTableModel.getAddressBook().getContacts().get(index);
              d.setName(c.getName());
              d.setAddress(c.getAddress());
              d.setDescription(c.getDescription());
              d.setAmount(c.getAmount());
              if (d.showDialog()) {
                c.setName(d.getName());
                c.setAddress(d.getAddress());
                c.setDescription(d.getDescription());
                c.setAmount(d.getAmount());
                addressBookTableModel.getAddressBook().sort();
                try {
                  addressBookTableModel.getAddressBook().save();
                } catch (IOException e1) {
                  e1.printStackTrace();
                  JOptionPane.showMessageDialog(
                      frmWow,
                      e1.getMessage(),
                      "Error During Address Book Save",
                      JOptionPane.ERROR_MESSAGE);
                } catch (ClassNotFoundException e1) {
                  e1.printStackTrace();
                  JOptionPane.showMessageDialog(
                      frmWow,
                      e1.getMessage(),
                      "Error During Address Book Save",
                      JOptionPane.ERROR_MESSAGE);
                } catch (BackingStoreException e1) {
                  e1.printStackTrace();
                  JOptionPane.showMessageDialog(
                      frmWow,
                      e1.getMessage(),
                      "Error During Address Book Save",
                      JOptionPane.ERROR_MESSAGE);
                }
                addressBookTableModel.fireTableDataChanged();
              }
            }
          }
        });
    btnEdit.setToolTipText("Edit address template");
    toolBarAddressbook.add(btnEdit);

    JButton btnDelete = new JButton("Delete");
    btnDelete.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
            int index = tableAddressBook.getSelectedRow();
            if (index != -1) {
              Contact c = addressBookTableModel.getAddressBook().getContacts().get(index);
              if (JOptionPane.showConfirmDialog(
                      frmWow,
                      "Do you really want to delete Address Template?\nName: "
                          + c.getName()
                          + "\nAddress: "
                          + c.getAddress()
                          + "\nDescription: "
                          + c.getDescription()
                          + "\nAmount: "
                          + c.getAmount(),
                      "Confirm Deletion",
                      JOptionPane.YES_NO_OPTION,
                      JOptionPane.QUESTION_MESSAGE)
                  == JOptionPane.YES_OPTION) {
                addressBookTableModel.getAddressBook().getContacts().remove(c);
                try {
                  addressBookTableModel.getAddressBook().save();
                } catch (IOException e1) {
                  e1.printStackTrace();
                  JOptionPane.showMessageDialog(
                      frmWow,
                      e1.getMessage(),
                      "Error During Address Book Save",
                      JOptionPane.ERROR_MESSAGE);
                } catch (ClassNotFoundException e1) {
                  e1.printStackTrace();
                  JOptionPane.showMessageDialog(
                      frmWow,
                      e1.getMessage(),
                      "Error During Address Book Save",
                      JOptionPane.ERROR_MESSAGE);
                } catch (BackingStoreException e1) {
                  e1.printStackTrace();
                  JOptionPane.showMessageDialog(
                      frmWow,
                      e1.getMessage(),
                      "Error During Address Book Save",
                      JOptionPane.ERROR_MESSAGE);
                }
                addressBookTableModel.fireTableDataChanged();
              }
            }
          }
        });
    btnDelete.setToolTipText("Delete address template");
    toolBarAddressbook.add(btnDelete);

    JButton btnSend = new JButton("Send");
    btnSend.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
            int row = tableAddressBook.getSelectedRow();
            if (row != -1) {
              Contact c = addressBookTableModel.getAddressBook().getContacts().get(row);
              send(c.getAddress(), c.getAmount());
            }
          }
        });
    btnSend.setFont(new Font("Lucida Grande", Font.PLAIN, 13));
    btnSend.setToolTipText("Send payment to address template");
    toolBarAddressbook.add(btnSend);

    Component horizontalGlue = Box.createHorizontalGlue();
    toolBarAddressbook.add(horizontalGlue);

    JButton btnSendToAddress = new JButton("Send to Address");
    btnSendToAddress.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
            send(null, 0);
          }
        });
    btnSendToAddress.setToolTipText("Send payment to specified address");
    btnSendToAddress.setFont(new Font("Lucida Grande", Font.PLAIN, 14));
    toolBarAddressbook.add(btnSendToAddress);

    Component horizontalGlue_1 = Box.createHorizontalGlue();
    toolBarAddressbook.add(horizontalGlue_1);

    Component horizontalStrut = Box.createHorizontalStrut(20);
    horizontalStrut.setPreferredSize(new Dimension(110, 0));
    toolBarAddressbook.add(horizontalStrut);

    JToolBar toolBarTotal = new JToolBar();
    frmWow.getContentPane().add(toolBarTotal, BorderLayout.NORTH);

    tglbtnLock = new JToggleButton("Not Encrypted");
    tglbtnLock.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
            if (coreWallet.isEncrypted()) {
              DialogPassword d = new DialogPassword();
              d.setLocationRelativeTo(frmWow);
              if (d.showDialog()) {
                try {
                  coreWallet.decrypt(new String(d.getPassword()));
                } catch (KeyCrypterException e) {
                  e.printStackTrace();
                  JOptionPane.showMessageDialog(
                      frmWow, "Wallet dencryption failed!", "Error", JOptionPane.ERROR_MESSAGE);
                }
              }
            } else {
              DialogEncrypt d = new DialogEncrypt();
              d.setLocationRelativeTo(frmWow);
              if (d.showDialog()) {
                // System.out.println("NAZDAR");
                // System.out.println(d.getPassword());
                try {
                  coreWallet.encrypt(new String(d.getPassword()));
                } catch (Exception e) { // KeyCrypterException
                  e.printStackTrace();
                  JOptionPane.showMessageDialog(
                      frmWow, "Wallet encryption failed!\n", "Error", JOptionPane.ERROR_MESSAGE);
                }
              }
            }
            updateEncryptionState();
          }
        });
    toolBarTotal.add(tglbtnLock);
    tglbtnLock.setToolTipText("Wallet not encrypted");

    JLabel lblTotal = new JLabel("Balance:");
    lblTotal.setFont(new Font("Lucida Grande", Font.PLAIN, 23));
    toolBarTotal.add(lblTotal);

    textTotalBalance = new JTextField();
    textTotalBalance.setPreferredSize(new Dimension(250, 28));
    textTotalBalance.setFont(new Font("Lucida Grande", Font.PLAIN, 23));
    textTotalBalance.setHorizontalAlignment(SwingConstants.CENTER);
    textTotalBalance.setBackground(SystemColor.window);
    textTotalBalance.setEditable(false);
    toolBarTotal.add(textTotalBalance);
    textTotalBalance.setColumns(10);

    JLabel lblTotalDoge = new JLabel("DOGE ");
    lblTotalDoge.setFont(new Font("Lucida Grande", Font.PLAIN, 23));
    toolBarTotal.add(lblTotalDoge);

    JToolBar toolBarStatus = new JToolBar();
    frmWow.getContentPane().add(toolBarStatus, BorderLayout.SOUTH);

    lblStatus = new JLabel(" Connecting...    ");
    toolBarStatus.add(lblStatus);

    progressBarStatus = new JProgressBar();
    progressBarStatus.setPreferredSize(new Dimension(250, 20));
    toolBarStatus.add(progressBarStatus);

    JLabel label = new JLabel("    ");
    toolBarStatus.add(label);
  }
  public void initComponents(NceSystemConnectionMemo m) throws Exception {
    this.memo = m;

    // populate the GUI, invoked as part of startup
    // load the port selection part
    portBox.setToolTipText("Select the port to use");
    portBox.setAlignmentX(JLabel.LEFT_ALIGNMENT);
    Vector<String> v = getPortNames();
    for (int i = 0; i < v.size(); i++) {
      portBox.addItem(v.elementAt(i));
    }
    openPortButton.setText("Open");
    openPortButton.setToolTipText("Configure program to use selected port");
    openPortButton.addActionListener(
        new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
            try {
              openPortButtonActionPerformed(evt);
              // } catch (jmri.jmrix.SerialConfigException ex) {
              //    log.error("Error while opening port.  Did you select the right one?\n"+ex);
            } catch (java.lang.UnsatisfiedLinkError ex) {
              log.error("Error while opening port.  Did you select the right one?\n" + ex);
            }
          }
        });
    {
      JSeparator js = new JSeparator();
      js.setMaximumSize(new Dimension(10000, 10));
      add(js);
    }
    JPanel p1 = new JPanel();
    p1.setLayout(new FlowLayout());
    p1.add(new JLabel("Serial port: "));
    p1.add(portBox);
    p1.add(openPortButton);
    p1.setMaximumSize(p1.getPreferredSize());
    add(p1);

    // add user part of GUI
    {
      JSeparator js = new JSeparator();
      js.setMaximumSize(new Dimension(10000, 10));
      add(js);
    }
    JPanel p2 = new JPanel();
    {
      JPanel p = new JPanel();
      p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
      checkButton.setToolTipText("?");
      checkButton.setEnabled(false);
      p.add(checkButton);
      checkButton.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              if (checkButton.isSelected()) {
                sendBytes(new byte[] {(byte) '?'});
                checkButton.setText("Res.");
                checkButton.setToolTipText("Resume packet monitoring");
              } else {
                sendBytes(new byte[] {(byte) ' '});
                checkButton.setText("Info");
                checkButton.setToolTipText("?");
              }
            }
          });
      truncateCheckBox.setToolTipText("Check this box to suppress identical packets");
      p.add(truncateCheckBox);
      p2.add(p);
    }

    {
      JPanel p = new JPanel();
      p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
      ButtonGroup g = new ButtonGroup();
      JRadioButton b;
      b = new JRadioButton("Verbose");
      b.setToolTipText("V");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'V'});
            }
          });
      b = new JRadioButton("Hex with preamble symbol");
      b.setToolTipText("H0");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'H', (byte) '0'});
            }
          });
      p2.add(p);
      b = new JRadioButton("(as above with spaces)");
      b.setToolTipText("H1");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'H', (byte) '1'});
            }
          });
      p2.add(p);
      b = new JRadioButton("Hex without preamble symbol");
      b.setToolTipText("H2");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'H', (byte) '2'});
            }
          });
      p2.add(p);
      b = new JRadioButton("(as above with spaces)");
      b.setToolTipText("H3");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'H', (byte) '3'});
            }
          });
      p2.add(p);
      b = new JRadioButton("Hex with preamble count in hex");
      b.setToolTipText("H4");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'H', (byte) '4'});
            }
          });
      p2.add(p);
      b = new JRadioButton("(as above with spaces)");
      b.setToolTipText("H5");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'H', (byte) '5'});
            }
          });
      p2.add(p);
    } // end hex/verbose group

    { // start acc off/on
      JPanel p = new JPanel();
      p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
      ButtonGroup g = new ButtonGroup();
      JRadioButton b;
      b = new JRadioButton("Hide acc packets");
      b.setToolTipText("A-");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'A', (byte) '-'});
            }
          });
      b = new JRadioButton("Show acc packets");
      b.setToolTipText("A+");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'A', (byte) '+'});
            }
          });
      p2.add(p);
    } // end acc off/on

    { // start idle off/on
      JPanel p = new JPanel();
      p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
      ButtonGroup g = new ButtonGroup();
      JRadioButton b;
      b = new JRadioButton("Hide idle packets");
      b.setToolTipText("I-");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'I', (byte) '-'});
            }
          });
      b = new JRadioButton("Show idle packets");
      b.setToolTipText("I+");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'I', (byte) '+'});
            }
          });
      p2.add(p);
    } // end idle off/on

    { // start loco off/on
      JPanel p = new JPanel();
      p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
      ButtonGroup g = new ButtonGroup();
      JRadioButton b;
      locoSpeedButton.setToolTipText("L-");
      g.add(locoSpeedButton);
      p.add(locoSpeedButton);
      locoSpeedButton.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'L', (byte) '-'});
            }
          });
      b = new JRadioButton("Show loco packets");
      b.setToolTipText("L+");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'L', (byte) '+'});
            }
          });
      p2.add(p);
    } // end loco off/on

    { // start reset off/on
      JPanel p = new JPanel();
      p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
      ButtonGroup g = new ButtonGroup();
      JRadioButton b;
      b = new JRadioButton("Hide reset packets");
      b.setToolTipText("R-");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'R', (byte) '-'});
            }
          });
      b = new JRadioButton("Show reset packets");
      b.setToolTipText("R+");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'R', (byte) '+'});
            }
          });
      p2.add(p);
    } // end reset off/on

    { // start signal on/off
      JPanel p = new JPanel();
      p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
      ButtonGroup g = new ButtonGroup();
      JRadioButton b;
      b = new JRadioButton("Hide signal packets");
      b.setToolTipText("S-");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'S', (byte) '-'});
            }
          });
      b = new JRadioButton("Show signal packets");
      b.setToolTipText("S+");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'S', (byte) '+'});
            }
          });
      p2.add(p);
    } // end signal off/on

    { // Monitor command acc single/double
      JPanel p = new JPanel();
      p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
      JLabel t = new JLabel("Monitor Command");
      p.add(t);
      ButtonGroup g = new ButtonGroup();
      JRadioButton b;
      b = new JRadioButton("Acc addresses single");
      b.setToolTipText("AS");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'A', (byte) 'S'});
            }
          });
      b = new JRadioButton("Acc addresses paired");
      b.setToolTipText("AP");
      g.add(b);
      p.add(b);
      b.addActionListener(
          new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
              sendBytes(new byte[] {(byte) 'A', (byte) 'P'});
            }
          });
      p2.add(p);
    } // end acc single/double

    p2.setMaximumSize(p2.getPreferredSize());
    JScrollPane ps = new JScrollPane(p2);
    ps.setMaximumSize(ps.getPreferredSize());
    ps.setVisible(true);
    add(ps);
  }