Package org.jwildfire.create.tina.swing

Source Code of org.jwildfire.create.tina.swing.DetachedPreviewWindow

package org.jwildfire.create.tina.swing;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

import org.jwildfire.base.Prefs;
import org.jwildfire.base.Tools;
import org.jwildfire.base.WindowPrefs;

public class DetachedPreviewWindow {
  private static final String DFLT_TITLE = "Detached preview";
  private DetachedPreviewController controller;
  private JFrame frame;
  private JPanel imageRootPanel;

  /**
   * Create the application.
   */
  public DetachedPreviewWindow() {
    initialize();
  }

  /**
   * Initialize the contents of the frame.
   */
  private void initialize() {
    frame = new JFrame();
    frame.addWindowListener(new WindowAdapter() {

      @Override
      public void windowClosing(WindowEvent e) {
        onClose(true);
      }
    });

    frame.setTitle(DFLT_TITLE);
    frame.setBounds(100, 100, 450, 300);
    WindowPrefs wPrefs = Prefs.getPrefs().getWindowPrefs(WindowPrefs.WINDOW_TINA_PREVIEW);
    frame.setLocation(wPrefs.getLeft(), wPrefs.getTop());
    frame.setSize(wPrefs.getWidth(450), wPrefs.getHeight(300));

    frame.setAlwaysOnTop(true);
    frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    frame.addComponentListener(new java.awt.event.ComponentAdapter() {
      public void componentResized(java.awt.event.ComponentEvent e) {
        if (getController() != null) {
          getController().startRender();
        }
      }
    });

    imageRootPanel = new JPanel();
    imageRootPanel.addMouseListener(new MouseAdapter() {
      @Override
      public void mouseClicked(MouseEvent e) {
        if (e.getClickCount() == 2) {
          getController().togglePause();
        }
      }
    });
    frame.getContentPane().add(imageRootPanel, BorderLayout.CENTER);
  }

  protected void onClose(boolean doNotify) {
    try {
      Dimension size = frame.getSize();
      Point pos = frame.getLocation();
      WindowPrefs wPrefs = Prefs.getPrefs().getWindowPrefs(WindowPrefs.WINDOW_TINA_PREVIEW);
      wPrefs.setLeft(pos.x);
      wPrefs.setTop(pos.y);
      wPrefs.setWidth(size.width);
      wPrefs.setHeight(size.height);
      if (doNotify)
        getController().notifyWindowIsClosing();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public JPanel getImageRootPanel() {
    return imageRootPanel;
  }

  public JFrame getFrame() {
    return frame;
  }

  public DetachedPreviewController getController() {
    return controller;
  }

  public void setController(DetachedPreviewController controller) {
    this.controller = controller;
  }

  public void setTitle(DetachedPreviewController.State pState, double pQuality) {
    switch (pState) {
      case PAUSE:
        getFrame().setTitle("Quality " + Tools.doubleToString(Tools.FTOI(pQuality)) + " (dbl-click to continue)");
        break;
      case RENDER:
        getFrame().setTitle("Quality " + Tools.doubleToString(Tools.FTOI(pQuality)) + " (dbl-click to pause)");
        break;
      default:
        getFrame().setTitle(DFLT_TITLE);
    }
  }

}
TOP

Related Classes of org.jwildfire.create.tina.swing.DetachedPreviewWindow

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.