Package no.ugland.utransprod.gui

Source Code of no.ugland.utransprod.gui.OverviewView$SelectionEmptyHandler

package no.ugland.utransprod.gui;

import java.awt.BorderLayout;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import no.ugland.utransprod.gui.handlers.AbstractViewHandler;
import no.ugland.utransprod.util.InternalFrameBuilder;

import org.jdesktop.swingx.JXTable;

import com.jgoodies.forms.builder.ButtonStackBuilder;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.factories.Borders;
import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

/**
* Klasse som h�ndterer visning av objekter
*
* @author atle.brekka
* @param <T>
* @param <E>
*/
public class OverviewView<T, E> implements Viewer, CloseListener {
  private WindowInterface mainWindow;

  private MouseListener doubleClickHandler;

  JXTable table;

  JButton buttonAdd;

  JButton buttonRemove;

  JButton buttonSearch;

  JButton buttonCancel;

  JButton buttonEdit;

  JLabel labelHeading;

  JButton buttonExcel;

  AbstractViewHandler<T, E> viewHandler;

  private boolean useSearchButton;

  private boolean useNewButton;

  private JScrollPane scrollPaneTable;

  private JComponent component;

  /**
   * @param handler
   */
  public OverviewView(final AbstractViewHandler<T, E> handler) {
    this(handler, true);
  }

  /**
   * @param handler
   * @param searchButton
   */
  public OverviewView(final AbstractViewHandler<T, E> handler,
      final boolean searchButton) {
    this(handler, searchButton, true);
  }

  /**
   * @param handler
   * @param searchButton
   * @param newButton
   */
  public OverviewView(final AbstractViewHandler<T, E> handler,
      final boolean searchButton, final boolean newButton) {
    useSearchButton = searchButton;
    useNewButton = newButton;
    viewHandler = handler;

  }

  /**
   * @see no.ugland.utransprod.gui.Viewer#buildWindow()
   */
  public final WindowInterface buildWindow() {
    mainWindow = InternalFrameBuilder.buildInternalFrame(viewHandler
        .getTitle(), viewHandler.getWindowSize(), true);

    component = buildPanel(mainWindow);
    mainWindow.add(component, BorderLayout.CENTER);

    return mainWindow;
  }

  /**
   * Initierer komponenter. Kan ikke v�re final fordi denne overskrives i
   * klasser som arver fra denne
   *
   * @param window
   */
  protected void initComponents(final WindowInterface window) {
    viewHandler.setWindowInterface(window);
    labelHeading = new JLabel(viewHandler.getHeading());
    labelHeading = viewHandler.getLabelHeading();
    buttonAdd = viewHandler.getAddButton(window);
    buttonRemove = viewHandler.getRemoveButton(window);
    buttonSearch = viewHandler.getSearchButton(window);
    buttonCancel = viewHandler.getCancelButton(window);
    buttonEdit = viewHandler.getEditButton(window);
    buttonExcel = viewHandler.getExcelButton(window);
    table = viewHandler.getTable(window);
    viewHandler.setColumnWidth(table);
    initEventHandling(window);
    updateActionEnablement();
  }

  /**
   * Bygger panel Kan ikke v�re final
   *
   * @param window
   * @return panel
   */
  public JComponent buildPanel(final WindowInterface window) {
    window.setName("Overview" + viewHandler.getClassName());
    initComponents(window);
    FormLayout layout = new FormLayout("15dlu,"
        + viewHandler.getTableWidth() + ":grow,3dlu,p,15dlu",
        "10dlu,p,3dlu,10dlu,p,3dlu,p,3dlu,p,3dlu,p,"
            + viewHandler.getTableHeight() + ":grow,p,5dlu,p,5dlu");
    // PanelBuilder builder = new PanelBuilder(layout,new FormDebugPanel());
    PanelBuilder builder = new PanelBuilder(layout);
    scrollPaneTable = new JScrollPane(table);
    scrollPaneTable.setBorder(Borders.EMPTY_BORDER);
    CellConstraints cc = new CellConstraints();

    builder.add(labelHeading, cc.xy(2, 2));
    builder.add(scrollPaneTable, cc.xywh(2, 4, 1, 9));
    // builder.add(table, cc.xywh(2, 4, 1, 9));

    builder.add(buildButtonPanel(), cc.xywh(4, 5, 1, 10));

    builder.add(ButtonBarFactory
        .buildCenteredBar(buttonExcel, buttonCancel), cc.xyw(2, 15, 3));

    return builder.getPanel();
  }

  /**
   * Bygger knappepanel Kan ikke v�re final
   *
   * @return panel
   */
  protected JPanel buildButtonPanel() {
    ButtonStackBuilder builder = new ButtonStackBuilder();
    if (useNewButton) {
      builder.addGridded(buttonAdd);
      builder.addRelatedGap();
    }
    builder.addGridded(buttonEdit);
    builder.addRelatedGap();
    builder.addGridded(buttonRemove);
    if (useSearchButton) {
      builder.addRelatedGap();
      builder.addGridded(buttonSearch);
    }

    return builder.getPanel();
  }

  /**
   * Initierer hendelseh�ndtering Kan ikke v�re final
   *
   * @param window
   */
  protected void initEventHandling(WindowInterface window) {
    viewHandler.setSelectionEmptyHandler(new SelectionEmptyHandler());
    doubleClickHandler = viewHandler.getDoubleClickHandler(window);
    table.addMouseListener(doubleClickHandler);
    viewHandler.addCloseListener(this);
  }

  /**
   * Oppdaterer enable/disable av knapper Kan ikke v�re final
   */
  protected void updateActionEnablement() {
    boolean hasSelection = viewHandler.objectSelectionListHasSelection();
    buttonEdit.setEnabled(hasSelection);
    if (viewHandler.hasWriteAccess()) {
      buttonRemove.setEnabled(hasSelection);
    }
  }

  /**
   * Klasse som h�ndterer valg av objekt
   *
   * @author atle.brekka
   */
  protected class SelectionEmptyHandler implements PropertyChangeListener {

    /**
     * @param evt
     */
    public final void propertyChange(final PropertyChangeEvent evt) {
      updateActionEnablement();
    }
  }

  /**
   * @see no.ugland.utransprod.gui.Viewer#getTitle()
   */
  public final String getTitle() {
    return viewHandler.getTitle();
  }

  /**
   * @see no.ugland.utransprod.gui.Viewer#initWindow()
   */
  public final void initWindow() {
    viewHandler.init();

  }

  /**
   * @see no.ugland.utransprod.gui.CloseListener#windowClosed()
   */
  public void windowClosed() {

  }

  /**
   * @see no.ugland.utransprod.gui.Viewer#cleanUp()
   */
  public final void cleanUp() {

  }

  /**
   * @see no.ugland.utransprod.gui.Viewer#useDispose()
   */
  public final boolean useDispose() {
    return viewHandler.getDisposeOnClose();
  }
}
TOP

Related Classes of no.ugland.utransprod.gui.OverviewView$SelectionEmptyHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.