diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint$PaperOrientation.class b/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint$PaperOrientation.class index 94b50f1..58b3845 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint$PaperOrientation.class and b/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint$PaperOrientation.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint.class b/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint.class index 285a064..c34e2c9 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint.class and b/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class index 8612a36..9649db6 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$1.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$1.class index a7a303a..e35ff62 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$1.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$1.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$2.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$2.class index 43284c4..632577d 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$2.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$2.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$3.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$3.class index be5b593..6342425 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$3.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$3.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$4.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$4.class index d96cf82..04341f8 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$4.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$4.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$5.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$5.class index ccef4cf..a0221c0 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$5.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$5.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$6.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$6.class index d0894f8..ca69d53 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$6.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$6.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$7.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$7.class index f1a5f49..da5d1a8 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$7.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$7.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$8.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$8.class index df305d0..59c0b77 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$8.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$8.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$9.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$9.class index 68cba51..da346b3 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$9.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$9.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel.class index 06c170b..390b45b 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$HomePrintModificationUndoableEdit.class b/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$HomePrintModificationUndoableEdit.class index e0351e4..ba8a8b0 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$HomePrintModificationUndoableEdit.class and b/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$HomePrintModificationUndoableEdit.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$Property.class b/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$Property.class index 7863513..39ba2ed 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$Property.class and b/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$Property.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController.class b/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController.class index 2b4fbd6..3244cf2 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController.class and b/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController.class differ diff --git a/SweetHome3D/src/com/eteks/sweethome3d/model/HomePrint.java b/SweetHome3D/src/com/eteks/sweethome3d/model/HomePrint.java index eed5c74..00ec54e 100644 --- a/SweetHome3D/src/com/eteks/sweethome3d/model/HomePrint.java +++ b/SweetHome3D/src/com/eteks/sweethome3d/model/HomePrint.java @@ -20,6 +20,7 @@ package com.eteks.sweethome3d.model; import java.io.Serializable; +import java.util.List; /** * The print attributes for a home. @@ -40,12 +41,14 @@ public class HomePrint implements Serializable { private final float paperLeftMargin; private final float paperBottomMargin; private final float paperRightMargin; - private final boolean furniturePrinted; - private final boolean planPrinted; + //private final boolean furniturePrinted; + //private final boolean planPrinted; private final boolean view3DPrinted; private final Float planScale; private final String headerFormat; private final String footerFormat; + private final List furnitureList; + private final List planViewList; /** @@ -58,8 +61,8 @@ public class HomePrint implements Serializable { float paperLeftMargin, float paperBottomMargin, float paperRightMargin, - boolean furniturePrinted, - boolean planPrinted, + List furnitureList, + List planViewList, boolean view3DPrinted, Float planScale, String headerFormat, @@ -71,8 +74,8 @@ public class HomePrint implements Serializable { this.paperLeftMargin = paperLeftMargin; this.paperBottomMargin = paperBottomMargin; this.paperRightMargin = paperRightMargin; - this.furniturePrinted = furniturePrinted; - this.planPrinted = planPrinted; + this.furnitureList = furnitureList; + this.planViewList = planViewList; this.view3DPrinted = view3DPrinted; this.planScale = planScale; this.headerFormat = headerFormat; @@ -132,15 +135,37 @@ public class HomePrint implements Serializable { * Returns whether home furniture should be printed or not. */ public boolean isFurniturePrinted() { - return this.furniturePrinted; + /* TODO: Remove this method and dependencies */ + return true; + //return this.furniturePrinted; } /** * Returns whether home plan should be printed or not. */ public boolean isPlanPrinted() { - return this.planPrinted; + /* TODO: Remove this method and dependencies */ + return true; + //return this.planPrinted; } + + /** + * Gets the Boolean list determining which levels + * should have furniture lists printed. + */ + public List getFurnitureList() { + return this.furnitureList; + } + + /** + * Gets the Boolean list determining which levels + * should have plan views printed. + */ + public List getPlanViewList() { + return this.planViewList; + } + + /** * Returns whether home 3D view should be printed or not. diff --git a/SweetHome3D/src/com/eteks/sweethome3d/swing/HomePrintableComponent.java b/SweetHome3D/src/com/eteks/sweethome3d/swing/HomePrintableComponent.java index c33faa4..dcaf0bc 100644 --- a/SweetHome3D/src/com/eteks/sweethome3d/swing/HomePrintableComponent.java +++ b/SweetHome3D/src/com/eteks/sweethome3d/swing/HomePrintableComponent.java @@ -384,6 +384,17 @@ public class HomePrintableComponent extends JComponent implements Printable { this.printablePages.add(page); } } + System.out.println("Test here"); + view3D = this.controller.getHomeController3D().getView(); + if (pageExists == NO_SUCH_PAGE + && view3D != null + && (homePrint == null || !homePrint.isView3DPrinted())) { + pageExists = ((Printable)view3D).print(g2D, pageFormat, page - this.planPageCount - this.furniturePageCount + 1); + if (pageExists == PAGE_EXISTS + && !this.printablePages.contains(page)) { + this.printablePages.add(page); + } + } // Print header and footer if (pageExists == PAGE_EXISTS) { diff --git a/SweetHome3D/src/com/eteks/sweethome3d/swing/PageSetupPanel.java b/SweetHome3D/src/com/eteks/sweethome3d/swing/PageSetupPanel.java index 84beccb..221d676 100644 --- a/SweetHome3D/src/com/eteks/sweethome3d/swing/PageSetupPanel.java +++ b/SweetHome3D/src/com/eteks/sweethome3d/swing/PageSetupPanel.java @@ -36,6 +36,8 @@ import java.awt.print.PrinterJob; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.security.AccessControlException; +import java.util.ArrayList; +import java.util.List; import javax.swing.ActionMap; import javax.swing.ButtonGroup; @@ -58,6 +60,7 @@ import javax.swing.event.DocumentListener; import com.eteks.sweethome3d.j3d.Component3DManager; import com.eteks.sweethome3d.model.HomePrint; +import com.eteks.sweethome3d.model.Level; import com.eteks.sweethome3d.model.UserPreferences; import com.eteks.sweethome3d.swing.NullableSpinner.NullableSpinnerNumberModel; import com.eteks.sweethome3d.tools.OperatingSystem; @@ -75,7 +78,7 @@ public class PageSetupPanel extends JPanel implements DialogView { private final PageSetupController controller; private PageFormat pageFormat; private JButton pageFormatButton; - private JCheckBox furniturePrintedCheckBox; + //private JCheckBox furniturePrintedCheckBox; private JCheckBox planPrintedCheckBox; private JRadioButton bestFitPlanScaleRadioButton; private JRadioButton userPlanScaleRadioButton; @@ -88,6 +91,8 @@ public class PageSetupPanel extends JPanel implements DialogView { private JLabel variablesLabel; private JToolBar variableButtonsToolBar; private String dialogTitle; + private List furnitureBoxes; + private List planViewBoxes; /** * Creates a panel that displays page setup. @@ -141,10 +146,19 @@ public class PageSetupPanel extends JPanel implements DialogView { final PageSetupController controller) { this.pageFormatButton = new JButton(SwingTools.getLocalizedLabelText(preferences, PageSetupPanel.class, "pageFormatButton.text")); - this.furniturePrintedCheckBox = new JCheckBox(SwingTools.getLocalizedLabelText(preferences, - PageSetupPanel.class, "furniturePrintedCheckBox.text")); + //this.furniturePrintedCheckBox = new JCheckBox(SwingTools.getLocalizedLabelText(preferences, + // PageSetupPanel.class, "furniturePrintedCheckBox.text")); this.planPrintedCheckBox = new JCheckBox(SwingTools.getLocalizedLabelText(preferences, - PageSetupPanel.class, "planPrintedCheckBox.text")); + PageSetupPanel.class, "planPrintedCheckBox.text")); + + // Create Lists for Furniture and PlanView Check Boxes + this.furnitureBoxes = new ArrayList(); + this.planViewBoxes = new ArrayList(); + for(Level curLvl : controller.getHomeLevels()) + { + furnitureBoxes.add(new JCheckBox(curLvl.getName())); + planViewBoxes.add(new JCheckBox(curLvl.getName())); + } // Create scale radio buttons and user's scale spinner this.bestFitPlanScaleRadioButton = new JRadioButton(SwingTools.getLocalizedLabelText(preferences, @@ -215,8 +229,18 @@ public class PageSetupPanel extends JPanel implements DialogView { updateController(controller); } }; - this.furniturePrintedCheckBox.addItemListener(itemListener); - this.planPrintedCheckBox.addItemListener(itemListener); + + for(JCheckBox chBx : this.furnitureBoxes) + { + chBx.addItemListener(itemListener); + } + for(JCheckBox chBx : this.planViewBoxes) + { + chBx.addItemListener(itemListener); + } + + //this.furniturePrintedCheckBox.addItemListener(itemListener); + //this.planPrintedCheckBox.addItemListener(itemListener); userPlanScaleSpinnerModel.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent ev) { updateController(controller); @@ -301,8 +325,13 @@ public class PageSetupPanel extends JPanel implements DialogView { final NullableSpinnerNumberModel userPlanScaleSpinnerModel = (NullableSpinner.NullableSpinnerNumberModel)this.userPlanScaleSpinner.getModel(); if (homePrint != null) { - this.furniturePrintedCheckBox.setSelected(homePrint.isFurniturePrinted()); - this.planPrintedCheckBox.setSelected(homePrint.isPlanPrinted()); + //this.furniturePrintedCheckBox.setSelected(homePrint.isFurniturePrinted()); + //this.planPrintedCheckBox.setSelected(homePrint.isPlanPrinted()); + for(int i = 0; i furnList = new ArrayList(); + List planList = new ArrayList(); + for(JCheckBox chBx : furnitureBoxes) + { + furnList.add(new Boolean(chBx.isSelected())); + } + for(JCheckBox chBx : planViewBoxes) + { + planList.add(new Boolean(chBx.isSelected())); + } + + HomePrint homePrint = new HomePrint(paperOrientation, (float)paper.getWidth(), (float)paper.getHeight(), (float)paper.getImageableY(), (float)paper.getImageableX(), (float)(paper.getHeight() - paper.getImageableHeight() - paper.getImageableY()), (float)(paper.getWidth() - paper.getImageableWidth() - paper.getImageableX()), - this.furniturePrintedCheckBox.isSelected(), - this.planPrintedCheckBox.isSelected(), + furnList, + planList, this.view3DPrintedCheckBox.isSelected(), this.userPlanScaleRadioButton.isSelected() && this.userPlanScaleSpinner.getValue() != null ? 1f / ((Number)this.userPlanScaleSpinner.getValue()).intValue() @@ -377,10 +419,10 @@ public class PageSetupPanel extends JPanel implements DialogView { if (!OperatingSystem.isMacOSX()) { this.pageFormatButton.setMnemonic(KeyStroke.getKeyStroke(preferences.getLocalizedString( PageSetupPanel.class, "pageFormatButton.mnemonic")).getKeyCode()); - this.furniturePrintedCheckBox.setMnemonic(KeyStroke.getKeyStroke(preferences.getLocalizedString( - PageSetupPanel.class, "furniturePrintedCheckBox.mnemonic")).getKeyCode()); - this.planPrintedCheckBox.setMnemonic(KeyStroke.getKeyStroke(preferences.getLocalizedString( - PageSetupPanel.class, "planPrintedCheckBox.mnemonic")).getKeyCode()); + //this.furniturePrintedCheckBox.setMnemonic(KeyStroke.getKeyStroke(preferences.getLocalizedString( + // PageSetupPanel.class, "furniturePrintedCheckBox.mnemonic")).getKeyCode()); + //this.planPrintedCheckBox.setMnemonic(KeyStroke.getKeyStroke(preferences.getLocalizedString( + // PageSetupPanel.class, "planPrintedCheckBox.mnemonic")).getKeyCode()); this.view3DPrintedCheckBox.setMnemonic(KeyStroke.getKeyStroke(preferences.getLocalizedString( PageSetupPanel.class, "view3DPrintedCheckBox.mnemonic")).getKeyCode()); this.bestFitPlanScaleRadioButton.setMnemonic(KeyStroke.getKeyStroke(preferences.getLocalizedString( @@ -405,18 +447,48 @@ public class PageSetupPanel extends JPanel implements DialogView { : GridBagConstraints.LINE_START; // First row JPanel topPanel = new JPanel(new GridBagLayout()); + JPanel checkListPanel = new JPanel(new GridBagLayout()); topPanel.add(this.pageFormatButton, new GridBagConstraints( 0, 0, 2, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 10, 0) , 0, 0)); Insets lastComponentInsets = new Insets(0, 0, 5, 0); + + System.out.println("Hello, world."); + for(Level curLvl : controller.getHomeLevels()) + { + System.out.println(curLvl.getName()); + } + checkListPanel.add(new JLabel("Plan Views:"), new GridBagConstraints( + 0,0,2,1,0,0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0,0,0,20),0,0)); + checkListPanel.add(new JLabel("Furniture Tables:"), new GridBagConstraints( + 2,0,2,1,0,0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0,0,0,0),0,0)); + int i = 1; + for(JCheckBox chBx : this.planViewBoxes) + { + checkListPanel.add(chBx, new GridBagConstraints( + 0,0+i,2,1,0,0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0,0,0,0),0,0)); + i++; + } + + i = 1; + for(JCheckBox chBx : this.furnitureBoxes) + { + checkListPanel.add(chBx, new GridBagConstraints( + 2,0+i,2,1,0,0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0,0,0,0),0,0)); + i++; + } + + topPanel.add(checkListPanel, new GridBagConstraints( + 0,1,2,1,0,0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0,0,0,0),0,0)); // Furniture component - topPanel.add(this.furniturePrintedCheckBox, new GridBagConstraints( + /*topPanel.add(this.furniturePrintedCheckBox, new GridBagConstraints( 0, 1, 2, 1, 0, 0, GridBagConstraints.LINE_START, - GridBagConstraints.NONE, lastComponentInsets , 0, 0)); + GridBagConstraints.NONE, lastComponentInsets , 0, 0));*/ // Plan components - topPanel.add(this.planPrintedCheckBox, new GridBagConstraints( + //topPanel.add(this.planPrintedCheckBox, new GridBagConstraints( + topPanel.add(new JLabel("Plan View:"), new GridBagConstraints( 0, 2, 2, 1, 0, 0, GridBagConstraints.LINE_START, - GridBagConstraints.NONE, new Insets(0, 0, 2, 0), 0, 0)); + GridBagConstraints.NONE, new Insets(10, 0, 2, 0), 0, 0)); topPanel.add(this.bestFitPlanScaleRadioButton, new GridBagConstraints( 0, 3, 2, 1, 0, 0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0, 20, 2, 0), 0, 0)); diff --git a/SweetHome3D/src/com/eteks/sweethome3d/viewcontroller/PageSetupController.java b/SweetHome3D/src/com/eteks/sweethome3d/viewcontroller/PageSetupController.java index 8246007..7e905da 100644 --- a/SweetHome3D/src/com/eteks/sweethome3d/viewcontroller/PageSetupController.java +++ b/SweetHome3D/src/com/eteks/sweethome3d/viewcontroller/PageSetupController.java @@ -21,6 +21,7 @@ package com.eteks.sweethome3d.viewcontroller; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.util.List; import javax.swing.undo.AbstractUndoableEdit; import javax.swing.undo.CannotRedoException; @@ -30,6 +31,7 @@ import javax.swing.undo.UndoableEditSupport; import com.eteks.sweethome3d.model.Home; import com.eteks.sweethome3d.model.HomePrint; +import com.eteks.sweethome3d.model.Level; import com.eteks.sweethome3d.model.UserPreferences; /** @@ -84,7 +86,7 @@ public class PageSetupController implements Controller { public void displayView(View parentView) { getView().displayView(parentView); } - + /** * Adds the property change listener in parameter to this controller. */ @@ -129,6 +131,27 @@ public class PageSetupController implements Controller { this.undoSupport.postEdit(undoableEdit); } + /** + * Returns a list of the levels in home + */ + public List getHomeLevels() { + return home.getLevels(); + } + + /** + * Returns the number of levels + */ + public int levelCount() { + return getHomeLevels().size(); + } + + /** + * Return the level at the specified index + */ + public Level getHomeLevel(int levelNumber) { + return getHomeLevels().get(levelNumber); + } + /** * Undoable edit for home print modification. This class isn't anonymous to avoid * being bound to controller and its view.