All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jive3.NavigationBar Maven / Gradle / Ivy

The newest version!
package jive3;

import jive.JiveUtils;

import javax.swing.*;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Vector;

/**
 * Navigation bar
 */

class ComboItem {

  String text;
  TreePath path;

  public String toString() {
    return text;
  }

}

public class NavigationBar extends JPanel implements ActionListener,KeyListener {

  private final static Insets nullInsets = new Insets(0,0,0,0);
  private JButton backBtn;
  private JButton forwardBtn;
  private JComboBox searchText;
  private JButton searchBtn;
  private JButton refreshBtn;
  private Vector listeners;
  private JButton upBtn;
  private JButton downBtn;

  private boolean isUpdating;

  NavigationBar() {

    setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();

    backBtn = new JButton();
    backBtn.setDisabledIcon(new ImageIcon(NavigationBar.class.getResource("/jive/bw_btn_disa.gif")));
    backBtn.setPressedIcon(new ImageIcon(NavigationBar.class.getResource("/jive/bw_btn_pressed.gif")));
    backBtn.setIcon(new ImageIcon(NavigationBar.class.getResource("/jive/bw_btn.gif")));
    backBtn.setMargin(nullInsets);
    backBtn.addActionListener(this);
    backBtn.setToolTipText("Go back");
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0;
    gbc.fill = GridBagConstraints.VERTICAL;
    add(backBtn,gbc);

    forwardBtn = new JButton();
    forwardBtn.setDisabledIcon(new ImageIcon(NavigationBar.class.getResource("/jive/fw_btn_disa.gif")));
    forwardBtn.setPressedIcon(new ImageIcon(NavigationBar.class.getResource("/jive/fw_btn_pressed.gif")));
    forwardBtn.setIcon(new ImageIcon(NavigationBar.class.getResource("/jive/fw_btn.gif")));
    forwardBtn.setMargin(nullInsets);
    forwardBtn.addActionListener(this);
    forwardBtn.setToolTipText("Go forward");
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 0;
    gbc.fill = GridBagConstraints.VERTICAL;
    add(forwardBtn,gbc);

    refreshBtn = new JButton();
    refreshBtn.setPressedIcon(new ImageIcon(NavigationBar.class.getResource("/jive/refresh_btn_pressed.gif")));
    refreshBtn.setIcon(new ImageIcon(NavigationBar.class.getResource("/jive/refresh_btn.gif")));
    refreshBtn.setMargin(nullInsets);
    refreshBtn.addActionListener(this);
    refreshBtn.setToolTipText("Refresh the tree");
    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.weightx = 0;
    gbc.fill = GridBagConstraints.VERTICAL;
    add(refreshBtn,gbc);

    isUpdating = true;
    searchText = new JComboBox();
    searchText.setEditable(true);
    searchText.getEditor().getEditorComponent().addKeyListener(this);
    searchText.addActionListener(this);
    gbc.gridx = 3;
    gbc.gridy = 0;
    gbc.weightx = 1;
    gbc.fill = GridBagConstraints.BOTH;
    add(searchText, gbc);
    isUpdating = false;

    downBtn = new JButton();
    downBtn.setPressedIcon(new ImageIcon(NavigationBar.class.getResource("/jive/down_btn_pressed.gif")));
    downBtn.setIcon(new ImageIcon(NavigationBar.class.getResource("/jive/down_btn.gif")));
    downBtn.setDisabledIcon(new ImageIcon(NavigationBar.class.getResource("/jive/down_btn_disa.gif")));
    downBtn.setMargin(nullInsets);
    downBtn.addActionListener(this);
    downBtn.setToolTipText("Next occurence");
    gbc.gridx = 4;
    gbc.gridy = 0;
    gbc.weightx = 0;
    gbc.fill = GridBagConstraints.VERTICAL;
    add(downBtn,gbc);

    //upBtn = new JButton();
    //upBtn.setPressedIcon(new ImageIcon(NavigationBar.class.getResource("/jive/up_btn_pressed.gif")));
    //upBtn.setIcon(new ImageIcon(NavigationBar.class.getResource("/jive/up_btn.gif")));
    //upBtn.setDisabledIcon(new ImageIcon(NavigationBar.class.getResource("/jive/up_btn_disa.gif")));
    //upBtn.setMargin(nullInsets);
    //upBtn.addActionListener(this);
    //upBtn.setToolTipText("Previous occurence");
    //gbc.gridx = 5;
    //gbc.gridy = 0;
    //gbc.weightx = 0;
    //gbc.fill = GridBagConstraints.VERTICAL;
    //add(upBtn,gbc);

    searchBtn = new JButton();
    searchBtn.setPressedIcon(new ImageIcon(NavigationBar.class.getResource("/jive/search_btn_pressed.gif")));
    searchBtn.setIcon(new ImageIcon(NavigationBar.class.getResource("/jive/search_btn.gif")));
    searchBtn.setMargin(nullInsets);
    searchBtn.addActionListener(this);
    searchBtn.setToolTipText("Search");
    gbc.gridx = 5;
    gbc.gridy = 0;
    gbc.weightx = 0;
    gbc.fill = GridBagConstraints.VERTICAL;
    add(searchBtn,gbc);

    listeners = new Vector();

  }

  public void addNavigationListener(NavigationListener l) {
    listeners.add(l);
  }

  public void removeNavigationListener(NavigationListener l) {
    listeners.remove(l);
  }

  public String getSearchText() {
    return searchText.getEditor().getItem().toString();
  }

  public TreePath getSelectedItemPath() {

    Object selectedItem = searchText.getSelectedItem();
    if( selectedItem instanceof ComboItem ) {
      ComboItem item = (ComboItem)selectedItem;
      return item.path;
    }

    return null;

  }

  public void addLink(TreePath path) {
    isUpdating = true;
    int idx = addSearchText(JiveUtils.getPathAsText(path),path);
    searchText.setSelectedIndex(idx);
    isUpdating = false;
  }

  public void enableBack(boolean enable) {
    backBtn.setEnabled(enable);
  }

  public void enableForward(boolean enable) {
    forwardBtn.setEnabled(enable);
  }

  public void enableNextOcc(boolean enable) {
    downBtn.setEnabled(enable);
  }

  public void enablePreviousOcc(boolean enable) {
    //upBtn.setEnabled(enable);
  }

  public void actionPerformed(ActionEvent evt) {

    Object src = evt.getSource();

    if(src==backBtn) {
      for(int i=0;i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy