1 package jimm.datavision.gui.cmd; 2 import jimm.datavision.Report; 3 import jimm.datavision.SectionArea; 4 import jimm.datavision.Section; 5 import jimm.datavision.field.Field; 6 import jimm.datavision.gui.Designer; 7 import jimm.datavision.gui.FieldWidget; 8 import jimm.datavision.gui.SectionWidget; 9 10 17 public class FieldClipping implements Pasteable { 18 19 protected Field origField; 20 protected FieldWidget newWidget; 21 protected SectionWidget origSectionWidget; 22 protected SectionArea sectionArea; 23 protected SectionResizeCommand sectionResizeCommand; 24 25 public FieldClipping(FieldWidget fw) { 26 origField = fw.getField(); 27 28 origSectionWidget = fw.getSectionWidget(); 31 32 sectionArea = origSectionWidget.getSectionArea(); 36 } 37 38 public void paste(Designer designer) { 39 Report pasteReport = designer.getReport(); 40 Report origReport = origSectionWidget.getReport(); 41 SectionWidget sw = null; 42 43 if (pasteReport == origReport) { 44 if (pasteReport.contains(origSectionWidget.getSection())) 45 sw = origSectionWidget; 46 else 47 sw = sectionWidgetBySectionArea(designer); 48 } 49 else { sw = sectionWidgetBySectionArea(designer); 51 } 52 53 54 Field newField = (Field)origField.clone(); 55 newWidget = newField.makeWidget(sw); 56 57 sectionResizeCommand = new SectionResizeCommand(sw); 58 newWidget.moveToSection(sw); sectionResizeCommand.perform(); 60 61 designer.select(newWidget, true, false); 62 63 } 66 67 protected SectionWidget sectionWidgetBySectionArea(Designer designer) { 68 Report report = designer.getReport(); 69 Section s = report.getFirstSectionByArea(sectionArea.getArea()); 70 if (s == null) s = report.getFirstSectionByArea(SectionArea.REPORT_HEADER); 73 return designer.findSectionWidgetFor(s); 74 } 75 76 public void undo(Designer designer) { 77 newWidget.doDelete(); sectionResizeCommand.undo(); 79 designer.enableMenuItems(); 80 } 81 82 } 83 | Popular Tags |