diff --git a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/AbstractSwingEnvironment.java b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/AbstractSwingEnvironment.java index d223a48..a24ba74 100644 --- a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/AbstractSwingEnvironment.java +++ b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/AbstractSwingEnvironment.java @@ -57,6 +57,7 @@ import org.eclipse.scout.rt.client.ui.ClientUIPreferences; import org.eclipse.scout.rt.client.ui.action.IAction; import org.eclipse.scout.rt.client.ui.basic.filechooser.IFileChooser; +import org.eclipse.scout.rt.client.ui.basic.table.ITable; import org.eclipse.scout.rt.client.ui.desktop.DesktopEvent; import org.eclipse.scout.rt.client.ui.desktop.DesktopListener; import org.eclipse.scout.rt.client.ui.desktop.IDesktop; @@ -69,6 +70,8 @@ import org.eclipse.scout.rt.client.ui.messagebox.IMessageBox; import org.eclipse.scout.rt.ui.swing.action.ISwingScoutAction; import org.eclipse.scout.rt.ui.swing.basic.SwingScoutComposite; +import org.eclipse.scout.rt.ui.swing.basic.table.ISwingScoutTable; +import org.eclipse.scout.rt.ui.swing.basic.table.SwingScoutTable; import org.eclipse.scout.rt.ui.swing.concurrency.SwingScoutSynchronizer; import org.eclipse.scout.rt.ui.swing.ext.IEmbeddedFrameProviderService; import org.eclipse.scout.rt.ui.swing.ext.JDialogEx; @@ -1189,4 +1192,10 @@ ClientUIPreferences.getInstance(getScoutSession()).setFormBounds(m_form, bounds); } } + + @Override + public ISwingScoutTable createTable(ITable table) { + return new SwingScoutTable(); + } + } diff --git a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/ISwingEnvironment.java b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/ISwingEnvironment.java index 4a386be..46094fc 100644 --- a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/ISwingEnvironment.java +++ b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/ISwingEnvironment.java @@ -27,6 +27,7 @@ import org.eclipse.scout.rt.client.IClientSession; import org.eclipse.scout.rt.client.ui.action.IAction; import org.eclipse.scout.rt.client.ui.basic.filechooser.IFileChooser; +import org.eclipse.scout.rt.client.ui.basic.table.ITable; import org.eclipse.scout.rt.client.ui.desktop.IDesktop; import org.eclipse.scout.rt.client.ui.form.FormEvent; import org.eclipse.scout.rt.client.ui.form.IForm; @@ -34,6 +35,7 @@ import org.eclipse.scout.rt.client.ui.form.fields.groupbox.IGroupBox; import org.eclipse.scout.rt.client.ui.messagebox.IMessageBox; import org.eclipse.scout.rt.ui.swing.action.ISwingScoutAction; +import org.eclipse.scout.rt.ui.swing.basic.table.ISwingScoutTable; import org.eclipse.scout.rt.ui.swing.ext.JDialogEx; import org.eclipse.scout.rt.ui.swing.ext.JStatusLabelEx; import org.eclipse.scout.rt.ui.swing.form.ISwingScoutForm; @@ -370,8 +372,7 @@ /** * Use this decorator to complete and style (incomplete) client html text for html and label fields in order to match - * current style - * sheet settings based on a {@link component}s font and color + * current style sheet settings based on a {@link component}s font and color. */ String styleHtmlText(ISwingScoutFormField uiComposite, String rawHtml); @@ -382,12 +383,28 @@ FormEvent[] fetchPendingPrintEvents(IForm form); /** - * Enables customization of JDialogEx by returning subtypes + * Enables customization of JDialogEx by returning subtypes. + * + * @return */ JDialogEx createJDialogEx(Dialog swingParent); /** - * Enables customization of JDialogEx by returning subtypes + * Enables customization of JDialogEx by returning subtypes. + * + * @return */ JDialogEx createJDialogEx(Frame swingParent); + + /** + * Creates a swing scout table instance for the given table model. The default implementation returns a + * SwingScoutTable instance. + * + * @param table + * Table model + * @return + * @since Bugzilla bug 405354 + */ + ISwingScoutTable createTable(ITable table); + } diff --git a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/listbox/SwingScoutListBox.java b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/listbox/SwingScoutListBox.java index 462af19..91b5866 100644 --- a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/listbox/SwingScoutListBox.java +++ b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/listbox/SwingScoutListBox.java @@ -14,13 +14,13 @@ import javax.swing.JTable; import javax.swing.UIManager; +import org.eclipse.scout.rt.client.ui.basic.table.ITable; import org.eclipse.scout.rt.client.ui.form.fields.IFormField; import org.eclipse.scout.rt.client.ui.form.fields.listbox.IListBox; import org.eclipse.scout.rt.ui.swing.LogicalGridData; import org.eclipse.scout.rt.ui.swing.LogicalGridLayout; import org.eclipse.scout.rt.ui.swing.basic.ISwingScoutComposite; import org.eclipse.scout.rt.ui.swing.basic.table.ISwingScoutTable; -import org.eclipse.scout.rt.ui.swing.basic.table.SwingScoutTable; import org.eclipse.scout.rt.ui.swing.ext.JPanelEx; import org.eclipse.scout.rt.ui.swing.ext.JStatusLabelEx; import org.eclipse.scout.rt.ui.swing.ext.JTableEx; @@ -36,8 +36,9 @@ container.setOpaque(false); JStatusLabelEx label = getSwingEnvironment().createStatusLabel(getScoutObject()); container.add(label); - m_tableComposite = new SwingScoutTable(); - m_tableComposite.createField(getScoutObject().getTable(), getSwingEnvironment()); + ITable scoutTable = getScoutObject().getTable(); + m_tableComposite = getSwingEnvironment().createTable(scoutTable); + m_tableComposite.createField(scoutTable, getSwingEnvironment()); //adjust table row height JTable table = m_tableComposite.getSwingTable(); if (UIManager.get("ListBox.rowHeight") != null) { diff --git a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/plannerfield/SwingScoutPlannerField.java b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/plannerfield/SwingScoutPlannerField.java index cebbcc1..cf6a681 100644 --- a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/plannerfield/SwingScoutPlannerField.java +++ b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/plannerfield/SwingScoutPlannerField.java @@ -30,11 +30,11 @@ import org.eclipse.scout.commons.OptimisticLock; import org.eclipse.scout.rt.client.ui.basic.activitymap.IActivityMap; +import org.eclipse.scout.rt.client.ui.basic.table.ITable; import org.eclipse.scout.rt.client.ui.form.fields.plannerfield.IPlannerField; import org.eclipse.scout.rt.ui.swing.SwingUtility; import org.eclipse.scout.rt.ui.swing.basic.activitymap.SwingScoutActivityMap; import org.eclipse.scout.rt.ui.swing.basic.table.ISwingScoutTable; -import org.eclipse.scout.rt.ui.swing.basic.table.SwingScoutTable; import org.eclipse.scout.rt.ui.swing.ext.JPanelEx; import org.eclipse.scout.rt.ui.swing.ext.calendar.CalendarViewEvent; import org.eclipse.scout.rt.ui.swing.ext.calendar.CalendarViewListener; @@ -58,8 +58,9 @@ protected void initializeSwing() { JPanel container = new JPanel(new PlannerFieldLayout(getSwingEnvironment(), getScoutObject().getGridData())); container.setOpaque(false); - m_resourceTableComposite = new SwingScoutTable(); - m_resourceTableComposite.createField(getScoutObject().getResourceTable(), getSwingEnvironment()); + ITable scoutTable = getScoutObject().getResourceTable(); + m_resourceTableComposite = getSwingEnvironment().createTable(scoutTable); + m_resourceTableComposite.createField(scoutTable, getSwingEnvironment()); JTableHeader h = m_resourceTableComposite.getSwingTable().getTableHeader(); if (h != null) { h.setPreferredSize(new Dimension(h.getPreferredSize().width, h.getFontMetrics(h.getFont()).getHeight() * 5 / 2)); diff --git a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/tablefield/SwingScoutTableField.java b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/tablefield/SwingScoutTableField.java index d8ef67e..710603e 100644 --- a/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/tablefield/SwingScoutTableField.java +++ b/org.eclipse.scout.rt.ui.swing/src/org/eclipse/scout/rt/ui/swing/form/fields/tablefield/SwingScoutTableField.java @@ -22,7 +22,6 @@ import org.eclipse.scout.rt.ui.swing.LogicalGridData; import org.eclipse.scout.rt.ui.swing.LogicalGridLayout; import org.eclipse.scout.rt.ui.swing.basic.table.ISwingScoutTable; -import org.eclipse.scout.rt.ui.swing.basic.table.SwingScoutTable; import org.eclipse.scout.rt.ui.swing.ext.JPanelEx; import org.eclipse.scout.rt.ui.swing.ext.JStatusLabelEx; import org.eclipse.scout.rt.ui.swing.ext.JTableEx; @@ -94,7 +93,7 @@ getSwingTable().getTableHeader().repaint(); } } - // << bugzilla 364121 + // << bugzilla 364121 } protected void setTableStatusFromScout() { @@ -117,7 +116,7 @@ m_tableComposite = null; } if (newTable != null) { - ISwingScoutTable newTableComposite = new SwingScoutTable(); + ISwingScoutTable newTableComposite = getSwingEnvironment().createTable(newTable); newTableComposite.createField(newTable, getSwingEnvironment()); // TODO replace with AbstractSwingEnvironment.createFormField.