Package org.eobjects.datacleaner.windows

Source Code of org.eobjects.datacleaner.windows.ReferenceDataDialog

/**
* eobjects.org DataCleaner
* Copyright (C) 2010 eobjects.org
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA  02110-1301  USA
*/
package org.eobjects.datacleaner.windows;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.inject.Inject;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;

import org.eobjects.datacleaner.bootstrap.WindowContext;
import org.eobjects.datacleaner.guice.InjectorBuilder;
import org.eobjects.datacleaner.panels.DCGlassPane;
import org.eobjects.datacleaner.panels.DCPanel;
import org.eobjects.datacleaner.panels.DictionaryListPanel;
import org.eobjects.datacleaner.panels.StringPatternListPanel;
import org.eobjects.datacleaner.panels.SynonymCatalogListPanel;
import org.eobjects.datacleaner.util.ImageManager;
import org.eobjects.datacleaner.util.WidgetFactory;
import org.eobjects.datacleaner.util.WidgetUtils;
import org.eobjects.datacleaner.widgets.HumanInferenceToolbarButton;
import org.eobjects.datacleaner.widgets.tabs.CloseableTabbedPane;

import com.google.inject.Injector;

public final class ReferenceDataDialog extends AbstractDialog {

  private static final long serialVersionUID = 1L;
  private static final ImageManager imageManager = ImageManager.getInstance();

  private final CloseableTabbedPane _tabbedPane;
  private final DCGlassPane _glassPane;
  private final InjectorBuilder _injectorBuilder;
  private volatile int _selectedTab;

  @Inject
  protected ReferenceDataDialog(WindowContext windowContext, InjectorBuilder injectorBuilder) {
    super(windowContext, imageManager.getImage("images/window/banner-reference-data.png"));
    _glassPane = new DCGlassPane(this);
    _tabbedPane = new CloseableTabbedPane();
    _injectorBuilder = injectorBuilder;
  }

  private JComponent scrolleable(JComponent comp) {
    JScrollPane scroll = WidgetUtils.scrolleable(comp);
    scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    return scroll;
  }

  public void selectDictionariesTab() {
    _selectedTab = 0;
    updateSelectedTab();
  }

  public void selectSynonymsTab() {
    _selectedTab = 1;
    updateSelectedTab();
  }

  public void selectStringPatternsTab() {
    _selectedTab = 2;
    updateSelectedTab();
  }

  private void updateSelectedTab() {
    if (_tabbedPane.getTabCount() > _selectedTab) {
      _tabbedPane.setSelectedIndex(_selectedTab);
    }
  }

  @Override
  protected String getBannerTitle() {
    return "Reference data";
  }

  @Override
  protected int getDialogWidth() {
    return 400;
  }

  @Override
  protected boolean isWindowResizable() {
    return true;
  }

  @Override
  protected JComponent getDialogContent() {
    Injector injectorWithGlassPane = _injectorBuilder.with(DCGlassPane.class, _glassPane).createInjector();

    final DictionaryListPanel dictionaryListPanel = injectorWithGlassPane.getInstance(DictionaryListPanel.class);
    final SynonymCatalogListPanel synonymCatalogListPanel = injectorWithGlassPane
        .getInstance(SynonymCatalogListPanel.class);
    final StringPatternListPanel stringPatternListPanel = injectorWithGlassPane
        .getInstance(StringPatternListPanel.class);

    _tabbedPane.addTab("Dictionaries", new ImageIcon(imageManager.getImage("images/model/dictionary.png")),
        scrolleable(dictionaryListPanel));
    _tabbedPane.addTab("Synonyms", new ImageIcon(imageManager.getImage("images/model/synonym.png")),
        scrolleable(synonymCatalogListPanel));
    _tabbedPane.addTab("String patterns", new ImageIcon(imageManager.getImage("images/model/stringpattern.png")),
        scrolleable(stringPatternListPanel));

    _tabbedPane.setUnclosableTab(0);
    _tabbedPane.setUnclosableTab(1);
    _tabbedPane.setUnclosableTab(2);

    updateSelectedTab();

    _tabbedPane.setPreferredSize(new Dimension(getDialogWidth(), 550));

    final JButton closeButton = WidgetFactory.createButton("Close", "images/actions/save.png");
    closeButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        ReferenceDataDialog.this.dispose();
      }
    });

    final JToolBar toolBar = WidgetFactory.createToolBar();
    toolBar.add(new HumanInferenceToolbarButton());
    toolBar.add(WidgetFactory.createToolBarSeparator());
    toolBar.add(closeButton);

    final DCPanel toolBarPanel = new DCPanel(WidgetUtils.BG_COLOR_DARKEST, WidgetUtils.BG_COLOR_DARKEST);
    toolBarPanel.setLayout(new BorderLayout());
    toolBarPanel.add(toolBar, BorderLayout.CENTER);

    final DCPanel panel = new DCPanel(WidgetUtils.BG_COLOR_DARK, WidgetUtils.BG_COLOR_DARK);
    panel.setLayout(new BorderLayout());
    panel.add(_tabbedPane, BorderLayout.CENTER);
    panel.add(toolBarPanel, BorderLayout.SOUTH);
    panel.setPreferredSize(getDialogWidth(), 500);
    return panel;
  }

  @Override
  public Image getWindowIcon() {
    return imageManager.getImage("images/model/reference-data.png");
  }

  @Override
  public String getWindowTitle() {
    return getBannerTitle();
  }

}
TOP

Related Classes of org.eobjects.datacleaner.windows.ReferenceDataDialog

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.