Package net.laubenberger.tyr.module.test

Source Code of net.laubenberger.tyr.module.test.TestImpl$ActionThread

/*
* Copyright (c) 2011-2012 by Stefan Laubenberger.
*
* Test is free software: you can redistribute it and/or modify
* it under the terms of the General Public License v2.0.
*
* Test 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.test;

import java.awt.TrayIcon.MessageType;
import java.awt.event.ActionEvent;
import java.io.File;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.UUID;

import javax.swing.JDialog;
import javax.swing.SwingUtilities;
import javax.xml.bind.JAXBException;

import net.laubenberger.bogatyr.helper.HelperCollection;
import net.laubenberger.bogatyr.helper.HelperLog;
import net.laubenberger.bogatyr.helper.HelperTime;
import net.laubenberger.bogatyr.helper.HelperXml;
import net.laubenberger.bogatyr.misc.Constants;
import net.laubenberger.bogatyr.misc.Event;
import net.laubenberger.bogatyr.model.application.ModelApplication;
import net.laubenberger.bogatyr.model.misc.Language;
import net.laubenberger.bogatyr.service.localizer.Localizer;
import net.laubenberger.bogatyr.service.property.Property;
import net.laubenberger.bogatyr.view.View;
import net.laubenberger.bogatyr.view.swing.ActionAbstract;
import net.laubenberger.bogatyr.view.swing.Dialog;
import net.laubenberger.bogatyr.view.swing.Separator;
import net.laubenberger.bogatyr.view.swing.worker.Worker;
import net.laubenberger.bogatyr.view.swing.worker.WorkerAbstract;
import net.laubenberger.tyr.controller.ModuleAbstract;
import net.laubenberger.tyr.misc.Callback;
import net.laubenberger.tyr.misc.ScalableIcon;
import net.laubenberger.tyr.model.FileType;
import net.laubenberger.tyr.model.Icon;
import net.laubenberger.tyr.model.ModuleConfig;
import net.laubenberger.tyr.model.ModuleConfigImpl;
import net.laubenberger.tyr.model.ModuleData;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Test module
*
* @author Stefan Laubenberger
* @version 0.9.2 (20110531)
* @since 0.0.1
*/
public class TestImpl extends ModuleAbstract implements Test {

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

  private static final String KEY_LAST_RUN = "key.last.run"; //$NON-NLS-1$

  final ModelApplication model = getModel();
  final Property property = model.getProperty();
  final Localizer localizer = model.getLocalizer();

  final Dialog dialogAbout;
  final Dialog dialogData;
  final Dialog dialogDb;
  final Dialog dialogComponents;

  final Collection<Dialog> dialogs = new HashSet<Dialog>();

  private boolean isExit = false;

  public static void main(final String[] args) {
    final ModuleConfig cm = new ModuleConfigImpl();
    cm.setName("Test"); //$NON-NLS-1$
    cm.setVersion(new BigDecimal("0.92")); //$NON-NLS-1$
    cm.setBuild(247);
    cm.setCreated(HelperTime.getDate(2012, 5, 31, 8, 37, 0));
    cm.setLanguage(Language.ENGLISH);
    cm.setUUID(UUID.fromString("febb21fe-52e6-4776-bfd4-dcc0fd2cc074")); //$NON-NLS-1$
    cm.addPerson(Constants.BOGATYR.getPersons().get(0)); //hopefully it's me :-)
    cm.setJars(HelperCollection.getList("tyr-module-test-0.92.jar", "lib/jbusycomponent-1.2.2.jar", "lib/jxlayer-3.0.4.jar" /*, "lib/commons-0.2.jar"*/))//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    cm.setModuleClass("net.laubenberger.tyr.module.test.TestImpl"); //$NON-NLS-1$
    cm.setLocalizerBase("net/laubenberger/tyr/module/test/test"); //$NON-NLS-1$
    cm.setLogo("net/laubenberger/tyr/module/test/icon/small/logo.png"); //$NON-NLS-1$
    cm.setLogoLarge("net/laubenberger/tyr/module/test/icon/large/logo.png"); //$NON-NLS-1$

    try {
      cm.setUrl(new URL("http://dev.laubenberger.net/")); //$NON-NLS-1$
      // cm.setUpdateLocation(new
      // URL("file://User/slaubenberger/Desktop/test_update.xml"));
    } catch (MalformedURLException ex) {
      // should never happen!
      log.error("URL invalid", ex); //$NON-NLS-1$
    }

    try {
      HelperXml.serialize(new File(cm.getName() + FileType.CONFIGURATION.getExtension()), cm);
    } catch (JAXBException ex) {
      log.error("Could not write the configration file", ex); //$NON-NLS-1$
    }
  }

  {
    dialogAbout = new DialogAbout(this);
    dialogData = new DialogData(this);
    dialogDb = new DialogDb(this);
    dialogComponents = new DialogComponents(this);
  }

  public TestImpl(final ModuleConfig moduleConfig, final ModuleData moduleData, final Callback callback,
      final ScalableIcon logo, final File dirDB) {
    super(moduleConfig, moduleData, callback, logo, dirDB);
    if (log.isTraceEnabled()) log.trace(HelperLog.constructor(moduleConfig, moduleData, callback, logo, dirDB));
  }

  /*
   * Implemented methods
   */

  @Override
  public synchronized void exit(final int returnCode) {
    if (log.isDebugEnabled()) log.debug(HelperLog.methodStart(returnCode));

    isExit = true;

    getModuleData().addValue(KEY_LAST_RUN, new Date());

    for (final Worker worker : model.getModelWorker().getWorkers()) {

      while (worker.cancel(false))
        ; // TODO endless loop?
    }

    if (log.isDebugEnabled()) log.debug("Test says byebye!");

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

  @Override
  public List<Object> getMenuItems() {
    if (log.isDebugEnabled()) log.debug(HelperLog.methodStart());

    final List<Object> result = new ArrayList<Object>();
    result.add(new ActionData());
    result.add(new ActionDb());
    result.add(new ActionThread());
    result.add(new ActionTask());
    result.add(new ActionMessage());
    result.add(new Separator());
    result.add(new ActionComponents());
    result.add(new Separator());
    result.add(new ActionAbout());

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

  @Override
  public void localeChanged(final Event<Localizer> event) {
    if (log.isDebugEnabled()) log.debug(HelperLog.methodStart(event));

    for (final Dialog dialog : dialogs) {
      dialog.createAndShowGUI();
    }

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

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

    for (final JDialog dialog : dialogs) {
      SwingUtilities.updateComponentTreeUI(dialog);
      dialog.pack();
    }

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

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

    for (final JDialog dialog : dialogs) {
      dialog.pack();
    }

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

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

    for (final Dialog dialog : dialogs) {
      dialog.createAndShowGUI();
    }

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

  @Override
  public Collection<Dialog> getDialogs() {
    if (log.isDebugEnabled()) log.debug(HelperLog.methodStart());

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

  @Override
  public void start(final Event<Worker> event) {
    if (log.isDebugEnabled()) log.debug(HelperLog.methodStart(event));

    model.getModelWorker().add(event.getSource());

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

  @Override
  public void done(final Event<Worker> event) {
    if (log.isDebugEnabled()) log.debug(HelperLog.methodStart(event));

    getCallback().removeWorker(event.getSource());

    if (!isExit) {
      model.getModelWorker().remove(event.getSource());
    }

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

  @Override
  public View getView() {
    // must not be implemented
    return null;
  }

  @Override
  public void setModel(final ModelApplication arg0) {
    // must not be implemented
  }

  @Override
  public void setView(final View arg0) {
    // must not be implemented
  }

  /*
   * Inner classes
   */
  private class ActionData extends ActionAbstract {
    private static final long serialVersionUID = 105006621470300297L;

    public ActionData() {
      super(localizer.getValue(HelperResource.RES_ACTION_DATA), getCallback().getScaledIcon(Icons.DATA), localizer
          .getTooltip(HelperResource.RES_ACTION_DATA), localizer.getMnemonic(HelperResource.RES_ACTION_DATA),
          localizer.getAccelerator(HelperResource.RES_ACTION_DATA));
    }

    @Override
    public void actionPerformed(final ActionEvent e) {
      dialogData.createAndShowGUI();
    }
  }

  private class ActionDb extends ActionAbstract {
    private static final long serialVersionUID = 9072848516956733674L;

    public ActionDb() {
      super(localizer.getValue(HelperResource.RES_ACTION_DB), getCallback().getScaledIcon(Icons.DB), localizer
          .getTooltip(HelperResource.RES_ACTION_DB), localizer.getMnemonic(HelperResource.RES_ACTION_DB),
          localizer.getAccelerator(HelperResource.RES_ACTION_DB));
    }

    @Override
    public void actionPerformed(final ActionEvent e) {
      dialogDb.createAndShowGUI();
    }
  }

  private class ActionThread extends ActionAbstract {
    private static final long serialVersionUID = 4161586338566306702L;

    public ActionThread() {
      super(localizer.getValue(HelperResource.RES_ACTION_THREAD), getCallback().getScaledIcon(Icons.THREAD),
          localizer.getTooltip(HelperResource.RES_ACTION_THREAD), localizer
              .getMnemonic(HelperResource.RES_ACTION_THREAD), localizer
              .getAccelerator(HelperResource.RES_ACTION_THREAD));
    }

    @Override
    public void actionPerformed(final ActionEvent e) {
      new DialogThread(TestImpl.this).createAndShowGUI();
    }
  }

  private class ActionTask extends ActionAbstract {
    private static final long serialVersionUID = -6383063323936181122L;

    public ActionTask() {
      super(localizer.getValue(HelperResource.RES_ACTION_TASK), getCallback().getScaledIcon(Icons.TASK), localizer
          .getTooltip(HelperResource.RES_ACTION_TASK), localizer.getMnemonic(HelperResource.RES_ACTION_TASK),
          localizer.getAccelerator(HelperResource.RES_ACTION_TASK));
    }

    @Override
    public void actionPerformed(final ActionEvent e) {

      final Worker worker = new WorkerAbstract<Void, Void>() {
        @Override
        protected Void doInBackground() throws Exception {
          fireWorkerStart();

          while (!isCancelled()) {
            Thread.sleep(250);
          }

          return null;
        }
      };

      worker.addListener(TestImpl.this);
      getCallback().addWorker(worker, localizer.getValue(HelperResource.RES_ACTION_TASK), "working...", Icons.TASK);

      // worker.execute();
      final Thread thread = new Thread(worker);
      thread.start();
      // ....
    }
  }

  private class ActionMessage extends ActionAbstract {
    private static final long serialVersionUID = -6069743810336885345L;

    public ActionMessage() {
      super(localizer.getValue(HelperResource.RES_ACTION_MESSAGE), getCallback().getScaledIcon(Icons.MESSAGE),
          localizer.getTooltip(HelperResource.RES_ACTION_MESSAGE), localizer
              .getMnemonic(HelperResource.RES_ACTION_MESSAGE), localizer
              .getAccelerator(HelperResource.RES_ACTION_MESSAGE));
    }

    @Override
    public void actionPerformed(final ActionEvent e) {
      // getCallback().displayMessage(localizer.getValue(HelperResource.RES_ACTION_MESSAGE),
      // "Hello world!", TrayIcon.MessageType.NONE);
      getCallback().displayMessage(null, "Hello world!", MessageType.INFO);
    }
  }

  private class ActionComponents extends ActionAbstract {
    private static final long serialVersionUID = 3634669752305335991L;

    public ActionComponents() {
      super(localizer.getValue(HelperResource.RES_ACTION_COMPONENTS), getCallback().getScaledIcon(Icons.COMPONENTS),
          localizer.getTooltip(HelperResource.RES_ACTION_COMPONENTS), localizer
              .getMnemonic(HelperResource.RES_ACTION_COMPONENTS), localizer
              .getAccelerator(HelperResource.RES_ACTION_COMPONENTS));
    }

    @Override
    public void actionPerformed(final ActionEvent e) {
      dialogComponents.createAndShowGUI();
    }
  }

  private class ActionAbout extends ActionAbstract {
    private static final long serialVersionUID = -5430835616592091539L;

    public ActionAbout() {
      super(localizer.getValue(HelperResource.RES_ACTION_ABOUT), getCallback().getScaledIcon(Icon.ABOUT), localizer
          .getTooltip(HelperResource.RES_ACTION_ABOUT), localizer.getMnemonic(HelperResource.RES_ACTION_ABOUT),
          localizer.getAccelerator(HelperResource.RES_ACTION_ABOUT));
    }

    @Override
    public void actionPerformed(final ActionEvent e) {
      dialogAbout.createAndShowGUI();
    }
  }
}
TOP

Related Classes of net.laubenberger.tyr.module.test.TestImpl$ActionThread

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.