Package net.laubenberger.tyr.module.scrambler

Source Code of net.laubenberger.tyr.module.scrambler.DialogAbout

/*
* Copyright (c) 2011 by Stefan Laubenberger.
*
* Scrambler is free software: you can redistribute it and/or modify
* it under the terms of the General Public License v2.0.
*
* Scrambler is distributed together with Tyr 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 General Public License for more details:
* <http://www.gnu.org/licenses>
*
* This distribution is available at:
* <http://code.google.com/p/tyr/>
* <http://dev.laubenberger.net/tyr/>
*
* Contact information:
* Stefan Laubenberger
* Bullingerstrasse 53
* CH-8004 Zuerich
*
* <http://www.laubenberger.net>
*
* <laubenberger@gmail.com>
*/
package net.laubenberger.tyr.module.scrambler;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.net.URI;
import java.net.URISyntaxException;

import javax.swing.BorderFactory;

import net.laubenberger.bogatyr.helper.HelperLog;
import net.laubenberger.bogatyr.helper.HelperString;
import net.laubenberger.bogatyr.service.localizer.Localizer;
import net.laubenberger.bogatyr.view.swing.ActionAbstract;
import net.laubenberger.bogatyr.view.swing.Button;
import net.laubenberger.bogatyr.view.swing.Dialog;
import net.laubenberger.bogatyr.view.swing.Group;
import net.laubenberger.bogatyr.view.swing.Label;
import net.laubenberger.bogatyr.view.swing.Panel;
import net.laubenberger.tyr.model.Icon;

import org.jdesktop.swingx.JXHyperlink;
import org.jdesktop.swingx.JXTitledSeparator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Dialog for the about informations.
*
* @author Stefan Laubenberger
* @version 0.3.0 (20110123)
* @since 0.0.1
*/
public class DialogAbout extends Dialog {
  private static final long serialVersionUID = 4161135982451721307L;

  private static final Logger log = LoggerFactory.getLogger(DialogAbout.class);

  final Scrambler scrambler;
  final Localizer localizer;

  public DialogAbout(final Scrambler scrambler) {
    super(scrambler.getOwner());
    if (log.isTraceEnabled()) log.trace(HelperLog.constructor(scrambler));

    this.scrambler = scrambler;
    localizer = scrambler.getModel().getLocalizer();
  }

  {
    // setAlwaysOnTop(true);
    setResizable(false);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  }

  /*
   * Private methods
   */

  private void createLayout() {
    getContentPane().removeAll();

    setTitle(scrambler.getModel().getName() + HelperString.COLON + HelperString.SPACE
        + localizer.getValue(HelperResource.RES_ACTION_ABOUT));

    final Panel panel = new Panel(new BorderLayout());
    panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 5, 10));

    final Panel panelWest = new Panel(new BorderLayout());
    panelWest.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 10));

    final Panel panelEast = new Panel(new GridLayout(0, 1));
    panelEast.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 10));

    panelWest.add(new Label(scrambler.getCallback().getScaledIcon(scrambler.getLogo())), BorderLayout.NORTH);

    panelEast.add(new Label(scrambler.getModel().getName() + HelperString.SPACE + scrambler.getModel().getVersion()));
    panelEast.add(new JXTitledSeparator(null));
    panelEast.add(new Label(HelperString.COPYRIGHT + " 2011:"));
    panelEast.add(new Label());
    panelEast.add(new Label("Stefan Laubenberger"));
    panelEast.add(new Label("Bullingerstrasse 53"));
    panelEast.add(new Label("CH-8004 Zürich"));
    panelEast.add(new Label());
    final JXHyperlink link = new JXHyperlink();
    final JXHyperlink mail = new JXHyperlink();
    try {
      link.setURI(new URI(HelperResource.URL));
      mail.setURI(new URI(HelperResource.MAIL));
    } catch (URISyntaxException ex) {
      //should never happen!
      log.error("Invalid URI", ex); //$NON-NLS-1$
    }
    panelEast.add(link);
    panelEast.add(mail);
    panelEast.add(new Label());
   
    panel.add(panelWest, BorderLayout.WEST);
    panel.add(panelEast, BorderLayout.EAST);

    final Group group = new Group(new Insets(0, 0, 0, 0), new Button(new ActionClose()));
    panel.add(group, BorderLayout.SOUTH);

    getContentPane().add(panel);
    pack();
  }

  /*
   * Overridden methods
   */

  @Override
  public void createAndShowGUI() {
    if (log.isDebugEnabled()) log.debug(HelperLog.methodStart());

    createLayout();
    pack();

    scrambler.getDialogs().add(this);

    super.createAndShowGUI();

    if (log.isDebugEnabled()) log.debug(HelperLog.methodExit());
  }

  @Override
  public void clearAndHide() {
    if (log.isDebugEnabled()) log.debug(HelperLog.methodStart());
   
    scrambler.getDialogs().remove(this);

    super.clearAndHide();
 
    if (log.isDebugEnabled()) log.debug(HelperLog.methodExit());
  }

  /*
   * Inner classes
   */

  private class ActionClose extends ActionAbstract {
    private static final long serialVersionUID = 3521248435384827073L;

    public ActionClose() {
      super(localizer.getValue(HelperResource.RES_ACTION_CLOSE), scrambler.getCallback().getScaledIcon(Icon.OK),
          localizer.getTooltip(HelperResource.RES_ACTION_CLOSE), localizer
              .getMnemonic(HelperResource.RES_ACTION_CLOSE));
    }

    @Override
    public void actionPerformed(final ActionEvent e) {
      clearAndHide();
    }
  }
}
TOP

Related Classes of net.laubenberger.tyr.module.scrambler.DialogAbout

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.