From 742396c9137a3a0827d21b91e02953d6ce1f66d3 Mon Sep 17 00:00:00 2001 From: Christian Schirmer Date: Wed, 18 Nov 2015 00:28:35 -0500 Subject: [PATCH] Modified HomePrint to contain array members Modified HomePrint constructor for arrays Modified get methods in HomePrint Modified PageSetupPanel for checkbox components Modified PageSetupPanel to create new checkbox components Modified PageSetupPanel to add item listeners Modified PageSetupPanel to update from HomePrint Modified PageSetupPanel to update to HomePrint Modified PageSetupPanel to add components graphically --- .../model/HomePrint$PaperOrientation.class | Bin 1321 -> 1321 bytes .../eteks/sweethome3d/model/HomePrint.class | Bin 2606 -> 3210 bytes .../swing/HomePrintableComponent.class | Bin 15051 -> 15295 bytes .../sweethome3d/swing/PageSetupPanel$1.class | Bin 1669 -> 1669 bytes .../sweethome3d/swing/PageSetupPanel$2.class | Bin 1317 -> 1317 bytes .../sweethome3d/swing/PageSetupPanel$3.class | Bin 1608 -> 1608 bytes .../sweethome3d/swing/PageSetupPanel$4.class | Bin 1154 -> 1154 bytes .../sweethome3d/swing/PageSetupPanel$5.class | Bin 1165 -> 1165 bytes .../sweethome3d/swing/PageSetupPanel$6.class | Bin 1159 -> 1159 bytes .../sweethome3d/swing/PageSetupPanel$7.class | Bin 1889 -> 1889 bytes .../sweethome3d/swing/PageSetupPanel$8.class | Bin 1949 -> 1949 bytes .../sweethome3d/swing/PageSetupPanel$9.class | Bin 1665 -> 1665 bytes .../sweethome3d/swing/PageSetupPanel.class | Bin 15656 -> 17336 bytes ...er$HomePrintModificationUndoableEdit.class | Bin 2120 -> 2120 bytes .../PageSetupController$Property.class | Bin 1293 -> 1293 bytes .../viewcontroller/PageSetupController.class | Bin 4037 -> 4603 bytes .../eteks/sweethome3d/model/HomePrint.java | 41 +++++-- .../swing/HomePrintableComponent.java | 11 ++ .../sweethome3d/swing/PageSetupPanel.java | 112 ++++++++++++++---- .../viewcontroller/PageSetupController.java | 25 +++- 20 files changed, 160 insertions(+), 29 deletions(-) diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint$PaperOrientation.class b/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint$PaperOrientation.class index 94b50f1ef82a03fc35749a1e5902d52425027fc5..58b3845e3eb3500c2b922910ac51a9b1a2d1a41f 100644 GIT binary patch delta 19 ZcmZ30RT6c1#tiX delta 19 ZcmZ30RT6M1#bWV diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint.class b/SweetHome3D/classes/com/eteks/sweethome3d/model/HomePrint.class index 285a064b38ce2a48fd53e34c1bd33866508b3974..c34e2c9254640dee3fad5ffb9f7971eba247516d 100644 GIT binary patch literal 3210 zcmb_e-%le|6#k~P6v~tzgj1MM0`RJS3XyRyMqKS!#iO)Xxr}$(%_YTvY4mXAnN#LA&dcJed{qFrv`Qx9T zegSX|`$@zU4DDOB9CO+GPR@D6n0sW^*wjI;W*x9Wi8cEqyGY{#(7J8LTnlywE^Wy^G2-E_-(wayZM zO@998-@hk5q5Nb0nAuyl!Aw_o38G-8aHie{ixK3Uf|RIs*En#GXy3eo4iQ*oM&-y= z&?#0s*71gJR}9*!O9Tq+&y{k zrG1^#&{KFqTE1%OE;XkfG5vtqdCRWp)J!InQgVsy3eP#TEcZ!H`mk=BhFiB;!EgxE z?PKb$QO)rPA=*nu#ngEUU25dx`Op?imQ`iCIk&)f;hmQ01b)@ld4o1tQ1Io*d8yBf zpUC!e(e-YqAD@*_;Dm$IkKp7Qqk>uITby=cTGjc_oh_z`rgYb`h4$(ic5HgV{fW>&iCe2T);&h zyQQKZPjT-R6!fT_^+_=99vO~;;j_IF zdS(}!t9)=ARO+oTw-`~cg4vPLvz3-9zb`1+EM20Qra))#VK4|XK_D#sMpsQr?+H>v zV5$z^uBiEN-hR!XfMOfCur-Jh5NVmtEY0`6- z;c#(>#*=!Ib26QJgW?3MRliABv-Eo+c1VyILH{odjMxPBSiG)PI2~y4gl4v8poxbQ|NRe7dSLA27s)Qv? z2}_C+mh>bnsYzJUlCY#2VM#N>l467@TVMH7BplL%M#rZ;Pu4UUiOl#S84>Q_@ zl!sX@+u>ne%c>q0v~1eL;&)WD1xxgIL3Do;apZ}E*J-y^niFfJ_jT&>Hil5Z7&hpi zfKA-M7H*-4WxPQd+q5c?4}9kLh!wm>E9zEos0fd<7!w}nu|;^C$++-1mkHrVdz~Ut@Z{qN_`Vc;TM8bJf-6#RK?=Sa1)Eav zh7^1~3a(4Rn^N#Z6#S7Cyd?!|QSir7aFHIG&-OT3epRvfHxa5o4IyKVd)ht&@(U@l zgdKVZz6kG}y6NfYGx;i1B+=Nu{GUZ;qD8)z7P;FvL-?W2MhSQ<1;2@Vl7~7U-T4P8 pco%O;zzb3E&rY}j6g}hkBXPz~<0KfDQd&rgGbwSKgfygSXq(h^QYSHW>VhQ}llaA+)}D!G z#;wYV73?ZDEZMOGp&~ItV$m%UYZm+zR*3uF#Ew0Fi>S8jd*;qP?_QsG-uSQo{&)@G zI;t^*6wDl2tsHaNQzz#RS$6wfrEGwKajK~h}p zTgN-PT{o!Jm`D`ak=x0Pi_Bfib*)w>=g;_%uhC5%wQbXI+qSP0t5LfuZ$~l-<#;CX z%wW$KH@nv({BHSB=Q@oSPgTt~E#0N*)dtgR%+6bOOQ&g5JtbwAwxiB#jx5VPt%Kb< z6-kV7G^^sAkLFa2`{*MTDIeujO!(-!ib)?Ws+huCocpngw2yA6c-u#xsL0?vzk5@~ zJGj8nEfw$L0&Q>6FxhUqb-?U>-=3+WMfz8CvMky4BpG%ahC?%+O+ng(i8^yj0rx3b z&CZ@}1(|avJ4^OkkCY@ACp$MgMox7Sz1Hnc)#udlPHB(r6P?`2Nl6(_e!$PvnjD=l zoKml+#|)>^?`oAVc53ViQen{AV^mb=bN6IlUDw~dFyCkKc-d;(hb(XKW0UMYn&x>E zIuBc>$?T1$?l{be;d2GcZ}#+{M^SJ~ahbd{M4t$m_dH@4COkq9(GcQfSh6K21@;47MJ{8Uk#F5!^dElB=JLJnbH$odEsigB9ZF@3(co%tW5Rq!ML diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class index 8612a36b309d6057f8adffacd729b97da2e0a81e..9649db65202e0e9e005d6bd698dfa544fd5c3e89 100644 GIT binary patch delta 3041 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 diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$2.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$2.class index 43284c4c8c4cda6f1bddd1c0384cdb98797b21d9..632577d0c84d935c920d0352719c693879bf00fa 100644 GIT binary patch delta 23 fcmZ3=wUleaOcus#lV`EGvEE?dW4Jl_DT@ODXMqTM delta 23 fcmZ3=wUleaOcurylV`EGv7Tb!V>mteDT@ODW$Oq~ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$3.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$3.class index be5b5939bc2b9b34fad43bfb93011444b0819c68..6342425e6d70268c4b8051864f3c42167273cb71 100644 GIT binary patch delta 31 ncmX@XbAo5XbXLaOlV`9-^4?=$VYtsA#_)hak>TOwf2>{rw&x1~ delta 31 ncmX@XbAo5XbXLZ*lV`9-@?KzIVYtX3#&C&2k>T>>f2>{rvpovB diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$4.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$4.class index d96cf82de0b4d455c0171e9489d791ff52faa686..04341f859c503bf9aac2766b0dadff37b5113842 100644 GIT binary patch delta 23 fcmZqTY~tMTlbP}H?B(3R!ov7vGAoNS>o*2&hVPSoSsVaTlm^-W delta 23 ecmeC>?B(3R!oqlGGAoNS>pcc;hWnF!SsVaQ+y;^W diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$6.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$6.class index d0894f8c57c0a04ce12f6511b18b1a3a10722cd4..ca69d53b7cb7b1370b46f77737228b061d1db451 100644 GIT binary patch delta 23 fcmZqYZ0FqYkD2l3$oh%+)VC^IrMs4=oI7&5X=mSpz;0M&yBj{pDw delta 40 wcmaFJ_mFSHEH=hxlV`JKh%vli;AMEpAkOfLL7Cw-gBrsd21AB-lO@?b03*T-;Q#;t diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$8.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$8.class index df305d07d0e41c2039512661005692f52ed502df..59c0b77670f69dfdf787988ec30bd513fe42b1a2 100644 GIT binary patch delta 59 zcmbQsKbL=lKN}Mx_vApfI6g*R20lhU21!PK26aY($$Qz{*cgQwSQ$kobFu@O;y|VZ LkSRO4h+P{1E8Gb> delta 59 zcmbQsKbL=lKN}On=gEO=aeNG48Tc5!F-S6eXHaMOF?lbW8ymxK23CeYlR4Re%>N9m Nj0`}g?BpVLZ2%D@5Ly5L diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$9.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/PageSetupPanel$9.class index 68cba51ab1f85292e5ccc09fac565de653c3d8e0..da346b34fdef62039fb920dc2ca9aacf07d40a93 100644 GIT binary patch delta 61 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 B(6s;n diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$HomePrintModificationUndoableEdit.class b/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$HomePrintModificationUndoableEdit.class index e0351e47fe7208f8bfbc02d1dc8c8673ecf1c2f6..ba8a8b04c0f387294d471e745cf2e1796af0dd2b 100644 GIT binary patch delta 73 zcmX>ha6(|iYBtfO3@i*Q88{hMG4L_0W)Nmr!yw79cJcwXO3sZynN1A*44WrAu?KQ) b2l93Rc{?Z1VRvWTJNXH_BjeJ^Y8*-c=cp87 delta 73 zcmX>ha6(|iYBte61{Q`%44e#;8Tc5cFbFeDWsqc;Hu(TsCFd-l%xngJhB=d+*aJBi b0C@|6yhW4eu)8xZoBV{`k+E;G8ix`9xq1^I diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$Property.class b/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController$Property.class index 78635135371008d85371fc6dac1ec2d658772fab..39ba2ed923289751ca1c2d01fbe0329fdfdbb37f 100644 GIT binary patch delta 19 ZcmeC>>gC#?&cdiWS%bv{NXD{k001$N1pNR2 delta 19 ZcmeC>>gC#?&cdiYS%bv{NXD{k001#?1o;2} diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController.class b/SweetHome3D/classes/com/eteks/sweethome3d/viewcontroller/PageSetupController.class index 2b4fbd6a517d655065fbbddb187bb1f985b100a3..3244cf297c372e0673fbb181baa249c5427ca766 100644 GIT binary patch delta 749 zcmZXROHUI~6vzK}+A?%Hono6}NNorq>J&p-O%;-&mV$;RwU7`ZD@`F|ZRsP@X-zOnHJ+?bI-Zw{Qtjma_{Hv@4X#+KR$c} za1yUY2n>Ub{Z9VX>f&cb&(_!%Y1En4^s!=IOK24>S7LChfkZY{Nd?P#CKpU(N_vFB zKAA}uQhIq_V;J~PFvPbk{;COxoQp^}fvSue7Rg8O1F)1cCX5uz1)ag72I3MJR%I+; z(Sf_TFXA49^7m*N4^U^YmNE-8S^jfXhGS|xkeDszgPN|*mH4j36K?Kc;2z6(f^`~1 z9tN)=HPN|LAsrl_$!fEDL_~w3r?G#;XZjc%=8DO3eny*TU~z_im2cRN^IDt8ryOsX z%zrv2{SjDk9(F{bU>F|6(1j5k#Rc@^A}`8I_Dc|vr0N9!CdX`-Az_*iIg_?4ka3l- zJEv_LW!ESRaIZ3YD2I0B;Y0y$6w!klJgZEwn|xQf?q8-}m3lRJahsTR^iou@f)G}D z)D^1IJJKUUz%BY{0ZTYc@f1}V#rD4U@NHxHo!JZ1*=E+)aGG+tslgcx(2WtePN(4y zQ#AZi-!@iuaEIY7-2|#15E?B)%9Q;^tl?n`5hJ-ka>YRScJN5RCv5z?$fk+uY${t6 m^57{rSjR91@r+koq3-AA_!oFd(M{?(nzBhRJ5KRcwCfkRCY$&G delta 233 zcmeyZd{kcG)W2Q(7#J7~85-Cbm>3x>CSDYq{DFmkvMsytMvuE(lN)(%GICCi<_(s$ zWME;iW#DA6W8h=3XAov^V31^RWKd;rX3%ADnS7eJmeZSooxukv>Nh!%&xtjZfr}w* z@(eyd)))pJhShI*ix4GhXaT7#jH!GNJ@@*DvJHUUQl3x=x6YXlACtARdXVyFRX WU;rA$1T>TpsF91oA4u0bNCE&Y^D%P( 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.