/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package photoSpreadObjects;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import photoSpread.PhotoSpread;
import photoSpreadObjects.photoSpreadComponents.DraggablePanel;
import photoSpreadTable.PhotoSpreadCell;
import photoSpreadTable.PhotoSpreadTable;
import photoSpreadTable.PhotoSpreadTableModel;
import photoSpreadTable.photoSpreadFormulaEditor.PhotoSpreadFormulaEditor;
import photoSpreadUtilities.Const;
import photoSpreadUtilities.Misc;
import photoSpreadUtilities.UUID;
/**
*
* @author skandel
*/
public class PhotoSpreadTableObject extends PhotoSpreadObject {
PhotoSpreadTable _table;
/****************************************************
* Constructor(s)
*****************************************************/
public PhotoSpreadTableObject(PhotoSpreadCell _cell, PhotoSpreadTable _table) {
// Tables don't have UUIDs, so pass up null:
super(_cell, null);
this._table = _table;
}
public PhotoSpreadTableObject(PhotoSpreadCell _cell) {
// Tables don't have UUIDs, so pass up null:
super(_cell, null);
this._table = new PhotoSpreadTable(new PhotoSpreadTableModel(), null);
addSheetOrnamentation();
}
public PhotoSpreadTableObject(JFrame enclosingWindow) {
super(null, null);
enclosingWindow.addWindowListener(new SheetWindowListener());
this._table = new PhotoSpreadTable(new PhotoSpreadTableModel(), enclosingWindow);
addSheetOrnamentation();
}
private void addSheetOrnamentation() {
_table.setBorder(BorderFactory.createLoweredBevelBorder());
}
/****************************************************
* Private (Inner) Classes
*****************************************************/
class SheetWindowListener extends WindowAdapter {
public void windowClosing(WindowEvent e) {
Misc.exitIfUserWants("Exiting PhotoSpread. Do it?");
}
public void windowDeiconified(WindowEvent e) {
}
}
/****************************************************
* Methods
*****************************************************/
@Override
public Component getObjectComponent(int height, int width) {
JPanel tablePanel = new JPanel();
DraggablePanel fullPanel = new DraggablePanel(this);
PhotoSpreadFormulaEditor formulaEditor = _table.getFormulaEditor();
// Size of the formula editor strip:
formulaEditor.setMinimumSize(PhotoSpread.photoSpreadPrefs.getDimension(PhotoSpread.formulaEditorStripSizeKey));
tablePanel.setLayout(new BorderLayout());
tablePanel.setBorder(BorderFactory.createLoweredBevelBorder());
tablePanel.add(_table.getTableHeader(), BorderLayout.PAGE_START);
JScrollPane scrollPane = new JScrollPane(_table);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
tablePanel.add(scrollPane, BorderLayout.CENTER);
tablePanel.setVisible(true);
fullPanel.setLayout(new BorderLayout());
tablePanel.setBorder(BorderFactory.createLoweredBevelBorder());
// Don't know what this size controls:
fullPanel.setMinimumSize(new Dimension(900, 100));
fullPanel.add(formulaEditor, BorderLayout.PAGE_START);
fullPanel.add(tablePanel, BorderLayout.CENTER);
return fullPanel;
}
@Override
public String toXML() {
return this._table.getPhotoSpreadModel().toXML();
}
@Override
public String constructorArgsToXML() {
return "";
}
public PhotoSpreadTable getTable() {
return _table;
}
public PhotoSpreadTable valueOf() {
return _table;
}
@Override
public Double toDouble() throws ClassCastException {
throw new ClassCastException("Cannot convert from a table to a number.");
}
@Override
public String toString() throws ClassCastException {
return "PhotoSpread Table in cell " + getCell().toString();
}
@Override
public <T extends Object> boolean contentEquals (T uuid) {
return (getObjectID().equals((UUID) uuid));
}
public PhotoSpreadTableModel getTableModel() {
return _table.getPhotoSpreadModel();
}
public void clear(){
if (JOptionPane.showConfirmDialog(_table,
"Clear whole table? (No files will be affected)",
"Confirm", // Title
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
_table.getPhotoSpreadModel().clear();
_table.getFormulaEditor().setText("");
_table.getWorkspace().reset(Const.DO_REDRAW);
_table.getWorkspace().pack();
}
}
@Override
public PhotoSpreadTableObject copyObject() {
throw new RuntimeException("Cannot copy a PhotoSpread table.");
}
}