From eb266595623b664800af7e7d7e6a32902aebdb5f Mon Sep 17 00:00:00 2001 From: Diego Ruiz Date: Fri, 1 Mar 2013 17:00:24 -0500 Subject: [PATCH 1/5] IDEMPIERE-556 Archive Viewer must not allow search when arriving from button --- .../src/org/adempiere/webui/WArchive.java | 1 + .../webui/apps/form/WArchiveViewer.java | 309 ++++++++++-------- 2 files changed, 173 insertions(+), 137 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WArchive.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WArchive.java index d7e3be8559..6fe382662f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WArchive.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WArchive.java @@ -158,6 +158,7 @@ public class WArchive implements EventListener ADForm form = ADForm.openForm(AD_Form_ID); WArchiveViewer av = (WArchiveViewer) form.getICustomForm(); + av.setShowQuery(false); if (e.getTarget() == m_documents) av.query(false, m_AD_Table_ID, m_Record_ID); else if (e.getTarget() == m_reports) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WArchiveViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WArchiveViewer.java index a380b22dc9..3a036d9f41 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WArchiveViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WArchiveViewer.java @@ -59,6 +59,7 @@ import org.compiere.util.Env; import org.compiere.util.KeyNamePair; import org.compiere.util.Msg; import org.zkoss.util.media.AMedia; +import org.zkoss.zk.ui.Page; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -122,20 +123,31 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis private Iframe iframe = new Iframe(); private Button bRefresh = new Button(); - + private boolean showQuery = true; + public WArchiveViewer() { log.info(""); - try - { - dynInit(); - jbInit(); - } - catch(Exception e) - { - log.log(Level.SEVERE, "init", e); - } + form = new CustomForm() { + private static final long serialVersionUID = 7226661630651936293L; + + @Override + public void onPageAttached(Page newpage, Page oldpage) { + super.onPageAttached(newpage, oldpage); + if (newpage != null) + try { + dynInit(); + jbInit(); + } + catch(Exception e) + { + log.log(Level.SEVERE, "init", e); + } + + } + + }; } /** @@ -221,103 +233,108 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis reportField.setLabel(Msg.translate(Env.getCtx(), "IsReport")); reportField.addEventListener(Events.ON_CHECK, this); - Grid gridQuery = new Grid(); - gridQuery.setWidth("500px"); - gridQuery.setStyle("margin:0; padding:0;"); - gridQuery.makeNoStrip(); - gridQuery.setOddRowSclass("even"); - - Rows rows = new Rows(); - gridQuery.appendChild(rows); + Rows rows; + Row row; + Div div; - Row row = new Row(); - rows.appendChild(row); - row.setAlign("right"); - row.appendCellChild(reportField, 3); + if(showQuery){ + Grid gridQuery = new Grid(); + gridQuery.setWidth("500px"); + gridQuery.setStyle("margin:0; padding:0;"); + gridQuery.makeNoStrip(); + gridQuery.setOddRowSclass("even"); - row = new Row(); - rows.appendChild(row); - Div div = new Div(); - div.setStyle("text-align: right;"); - div.appendChild(processLabel); - row.appendCellChild(div, 1); - row.appendCellChild(processField, 2); - processField.setWidth("100%"); - - row = new Row(); - rows.appendChild(row); - div = new Div(); - div.setStyle("text-align: right;"); - div.appendChild(bPartnerLabel); - row.appendCellChild(div, 1); - row.appendCellChild(bPartnerField.getComponent(), 2); - - row = new Row(); - rows.appendChild(row); - div = new Div(); - div.setStyle("text-align: right;"); - div.appendChild(tableLabel); - row.appendCellChild(div, 1); - row.appendCellChild(tableField, 2); - tableField.setWidth("100%"); - - row = new Row(); - rows.appendChild(row); - div = new Div(); - div.setStyle("text-align: right;"); - div.appendChild(nameQLabel); - row.appendCellChild(div, 1); - row.appendCellChild(nameQField, 2); - nameQField.setWidth("100%"); - - row = new Row(); - rows.appendChild(row); - div = new Div(); - div.setStyle("text-align: right;"); - div.appendChild(descriptionQLabel); - row.appendCellChild(div, 1); - row.appendCellChild(descriptionQField, 2); - descriptionQField.setWidth("100%"); - - row = new Row(); - rows.appendChild(row); - div = new Div(); - div.setStyle("text-align: right;"); - div.appendChild(helpQLabel); - row.appendCellChild(div, 1); - row.appendCellChild(helpQField, 2); - helpQField.setWidth("100%"); - - row = new Row(); - rows.appendChild(row); - div = new Div(); - div.setStyle("text-align: right;"); - div.appendChild(createdByQLabel); - row.appendCellChild(div, 1); - row.appendCellChild(createdByQField, 2); - createdByQField.setWidth("100%"); - - row = new Row(); - rows.appendChild(row); - div = new Div(); - div.setStyle("text-align: right;"); - div.appendChild(createdQLabel); - row.appendChild(div); - row.appendChild(createdQFrom); - row.appendChild(createdQTo); - - div = new Div(); - div.setStyle("text-align: center;"); - div.appendChild(gridQuery); - - Tabpanel tabQueryPanel = new Tabpanel(); - tabQueryPanel.appendChild(div); + rows = new Rows(); + gridQuery.appendChild(rows); - Tab tabQuery = new Tab(Msg.getMsg(Env.getCtx(), "ViewerQuery")); + row = new Row(); + rows.appendChild(row); + row.setAlign("right"); + row.appendCellChild(reportField, 3); - tabpanels.appendChild(tabQueryPanel); - tabs.appendChild(tabQuery); - + row = new Row(); + rows.appendChild(row); + div = new Div(); + div.setStyle("text-align: right;"); + div.appendChild(processLabel); + row.appendCellChild(div, 1); + row.appendCellChild(processField, 2); + processField.setWidth("100%"); + + row = new Row(); + rows.appendChild(row); + div = new Div(); + div.setStyle("text-align: right;"); + div.appendChild(bPartnerLabel); + row.appendCellChild(div, 1); + row.appendCellChild(bPartnerField.getComponent(), 2); + + row = new Row(); + rows.appendChild(row); + div = new Div(); + div.setStyle("text-align: right;"); + div.appendChild(tableLabel); + row.appendCellChild(div, 1); + row.appendCellChild(tableField, 2); + tableField.setWidth("100%"); + + row = new Row(); + rows.appendChild(row); + div = new Div(); + div.setStyle("text-align: right;"); + div.appendChild(nameQLabel); + row.appendCellChild(div, 1); + row.appendCellChild(nameQField, 2); + nameQField.setWidth("100%"); + + row = new Row(); + rows.appendChild(row); + div = new Div(); + div.setStyle("text-align: right;"); + div.appendChild(descriptionQLabel); + row.appendCellChild(div, 1); + row.appendCellChild(descriptionQField, 2); + descriptionQField.setWidth("100%"); + + row = new Row(); + rows.appendChild(row); + div = new Div(); + div.setStyle("text-align: right;"); + div.appendChild(helpQLabel); + row.appendCellChild(div, 1); + row.appendCellChild(helpQField, 2); + helpQField.setWidth("100%"); + + row = new Row(); + rows.appendChild(row); + div = new Div(); + div.setStyle("text-align: right;"); + div.appendChild(createdByQLabel); + row.appendCellChild(div, 1); + row.appendCellChild(createdByQField, 2); + createdByQField.setWidth("100%"); + + row = new Row(); + rows.appendChild(row); + div = new Div(); + div.setStyle("text-align: right;"); + div.appendChild(createdQLabel); + row.appendChild(div); + row.appendChild(createdQFrom); + row.appendChild(createdQTo); + + div = new Div(); + div.setStyle("text-align: center;"); + div.appendChild(gridQuery); + + Tabpanel tabQueryPanel = new Tabpanel(); + tabQueryPanel.appendChild(div); + + Tab tabQuery = new Tab(Msg.getMsg(Env.getCtx(), "ViewerQuery")); + + tabpanels.appendChild(tabQueryPanel); + tabs.appendChild(tabQuery); + } Grid gridView = new Grid(); gridView.setStyle("margin:0; padding:0;"); gridView.makeNoStrip(); @@ -450,10 +467,10 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis SessionManager.getAppDesktop().closeActiveWindow(); else if (e.getTarget().getId().equals(ConfirmPanel.A_OK)) { - if (tabbox.getSelectedIndex() == 1) - SessionManager.getAppDesktop().closeActiveWindow(); - else + if (showQuery && tabbox.getSelectedIndex() == 0) cmd_query(); + else + SessionManager.getAppDesktop().closeActiveWindow(); } else if (e.getTarget() == reportField) updateQDisplay(); @@ -465,7 +482,7 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis iframe.invalidate(); else if (e.getTarget() instanceof Tab) { - if(tabbox.getSelectedIndex() == 1) + if(tabbox.getSelectedIndex() == (showQuery ? 1 : 0)) iframe.invalidate(); } @@ -504,6 +521,7 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis MArchive ar = m_archives[m_index]; ar.delete(true); tabbox.setSelectedIndex(0); + cmd_query(); dynInit(); } } @@ -639,51 +657,68 @@ public class WArchiveViewer extends Archive implements IFormController, EventLis { boolean reports = reportField.isChecked(); - ListItem listitem = processField.getSelectedItem(); KeyNamePair process = null; - if (listitem != null) - process = (KeyNamePair)listitem.getValue(); - - listitem = tableField.getSelectedItem(); + Integer C_BPartner_ID = null; + String name = null; + String description = null; + String help = null; KeyNamePair table = null; - if (listitem != null) - table = (KeyNamePair)listitem.getValue(); - - Integer C_BPartner_ID = (Integer)bPartnerField.getValue(); - String name = nameQField.getText(); - String description = descriptionQField.getText(); - String help = helpQField.getText(); - - listitem = createdByQField.getSelectedItem(); KeyNamePair createdBy = null; - if (listitem != null) - createdBy = (KeyNamePair)listitem.getValue(); - - Date date = null; Timestamp createdFrom = null; - if (createdQFrom.getValue() != null) - { - date = createdQFrom.getValue(); - createdFrom = new Timestamp(date.getTime()); - } - Timestamp createdTo = null; - if (createdQTo.getValue() != null) - { - date = createdQTo.getValue(); - createdTo = new Timestamp(date.getTime()); + + if (showQuery) { + ListItem listitem = processField.getSelectedItem(); + process = null; + if (listitem != null) + process = (KeyNamePair)listitem.getValue(); + + listitem = tableField.getSelectedItem(); + table = null; + if (listitem != null) + table = (KeyNamePair)listitem.getValue(); + + C_BPartner_ID = (Integer)bPartnerField.getValue(); + name = nameQField.getText(); + description = descriptionQField.getText(); + help = helpQField.getText(); + + listitem = createdByQField.getSelectedItem(); + createdBy = null; + if (listitem != null) + createdBy = (KeyNamePair)listitem.getValue(); + + Date date = null; + createdFrom = null; + if (createdQFrom.getValue() != null) + { + date = createdQFrom.getValue(); + createdFrom = new Timestamp(date.getTime()); + } + + createdTo = null; + if (createdQTo.getValue() != null) + { + date = createdQTo.getValue(); + createdTo = new Timestamp(date.getTime()); + } } cmd_query(reports, process, table, C_BPartner_ID, name, description, help, createdBy, createdFrom, createdTo); - // Display - tabbox.setSelectedIndex(1); m_index = 1; + if (showQuery) + tabbox.setSelectedIndex(1); + updateVDisplay(false); } // cmd_query + public void setShowQuery(boolean showQuery) { + this.showQuery = showQuery; + } + public ADForm getForm() { return form; } From 893530a9b913a3867125ecca1d09e4b6962c26c1 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Fri, 1 Mar 2013 19:27:49 -0500 Subject: [PATCH 2/5] IDEMPIERE-127 Implement Recent Items dashboard / Let modified items appear on top --- .../src/org/compiere/model/MRecentItem.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MRecentItem.java b/org.adempiere.base/src/org/compiere/model/MRecentItem.java index 588645a2da..f66b1ceb97 100644 --- a/org.adempiere.base/src/org/compiere/model/MRecentItem.java +++ b/org.adempiere.base/src/org/compiere/model/MRecentItem.java @@ -170,11 +170,22 @@ public class MRecentItem extends X_AD_RecentItem ri.setAD_Table_ID(AD_Table_ID); ri.setRecord_ID(Record_ID); ri.setAD_User_ID(AD_User_ID); + ri.setAD_Role_ID(AD_Role_ID); + ri.setAD_Window_ID(AD_Window_ID); + ri.setAD_Tab_ID(AD_Tab_ID); + ri.saveEx(); + } else { + if ( ri.getAD_Role_ID() != AD_Role_ID + || ri.getAD_Window_ID() != AD_Window_ID + || ri.getAD_Tab_ID() != AD_Tab_ID) { + ri.setAD_Role_ID(AD_Role_ID); + ri.setAD_Window_ID(AD_Window_ID); + ri.setAD_Tab_ID(AD_Tab_ID); + ri.saveEx(); + } else { + DB.executeUpdateEx("UPDATE AD_RecentItem SET Updated=SYSDATE WHERE AD_RecentItem_ID=?", new Object[] {ri.getAD_RecentItem_ID()}, null); + } } - ri.setAD_Role_ID(AD_Role_ID); - ri.setAD_Window_ID(AD_Window_ID); - ri.setAD_Tab_ID(AD_Tab_ID); - ri.saveEx(); publishChangedEvent(AD_User_ID); } From 5776804b4a9d2ca340a7e6a4c2cb8aac4869b286 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sun, 3 Mar 2013 13:48:54 -0500 Subject: [PATCH 3/5] IDEMPIERE-633 AdempiereActivator.packIn() causes NullPointerException --- .../src/org/adempiere/plugin/utils/AdempiereActivator.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java b/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java index 70511dc342..bc861de6f9 100644 --- a/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java +++ b/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java @@ -11,6 +11,7 @@ import org.adempiere.base.IDictionaryService; import org.adempiere.base.Service; import org.compiere.model.Query; import org.compiere.model.X_AD_Package_Imp; +import org.compiere.util.AdempiereSystemError; import org.compiere.util.Env; import org.compiere.util.Trx; import org.osgi.framework.BundleActivator; @@ -97,6 +98,8 @@ public class AdempiereActivator implements BundleActivator { IDictionaryService service = Service.locator().locate(IDictionaryService.class).getService(); FileOutputStream zipstream = null; try { + if (service == null) + throw new AdempiereSystemError("Could not find/load OSGi service for packin"); // copy the resource to a temporary file to process it with 2pack InputStream stream = context.getBundle().getEntry("/META-INF/2Pack.zip").openStream(); File zipfile = File.createTempFile(getName(), ".zip"); From de9b233f88014e8c8421954e18f0e7ff0f979290 Mon Sep 17 00:00:00 2001 From: Richard Morales Date: Sun, 3 Mar 2013 13:49:06 -0500 Subject: [PATCH 4/5] IDEMPIERE-671 AD_ImpFormat.Name unique is wrong - must have AD_Client in the unique index --- .../oracle/201303010917_IDEMPIERE-671.sql | 9 +++++++ .../postgresql/201303010917_IDEMPIERE-671.sql | 9 +++++++ .../src/org/compiere/impexp/ImpFormat.java | 25 ++++++------------- .../org/compiere/apps/form/VFileImport.java | 17 +++++++------ .../webui/apps/form/WFileImport.java | 11 ++++---- 5 files changed, 41 insertions(+), 30 deletions(-) create mode 100644 migration/i1.0a-release/oracle/201303010917_IDEMPIERE-671.sql create mode 100644 migration/i1.0a-release/postgresql/201303010917_IDEMPIERE-671.sql diff --git a/migration/i1.0a-release/oracle/201303010917_IDEMPIERE-671.sql b/migration/i1.0a-release/oracle/201303010917_IDEMPIERE-671.sql new file mode 100644 index 0000000000..43861661da --- /dev/null +++ b/migration/i1.0a-release/oracle/201303010917_IDEMPIERE-671.sql @@ -0,0 +1,9 @@ +DROP INDEX ad_impformat_name +; + +CREATE UNIQUE INDEX ad_impformat_name + ON ad_impformat (ad_client_id, name) +; +SELECT register_migration_script('201303010917_IDEMPIERE-671.sql') FROM dual +; + diff --git a/migration/i1.0a-release/postgresql/201303010917_IDEMPIERE-671.sql b/migration/i1.0a-release/postgresql/201303010917_IDEMPIERE-671.sql new file mode 100644 index 0000000000..43861661da --- /dev/null +++ b/migration/i1.0a-release/postgresql/201303010917_IDEMPIERE-671.sql @@ -0,0 +1,9 @@ +DROP INDEX ad_impformat_name +; + +CREATE UNIQUE INDEX ad_impformat_name + ON ad_impformat (ad_client_id, name) +; +SELECT register_migration_script('201303010917_IDEMPIERE-671.sql') FROM dual +; + diff --git a/org.adempiere.base/src/org/compiere/impexp/ImpFormat.java b/org.adempiere.base/src/org/compiere/impexp/ImpFormat.java index f05f8fa9ed..7fe5ce75a6 100644 --- a/org.adempiere.base/src/org/compiere/impexp/ImpFormat.java +++ b/org.adempiere.base/src/org/compiere/impexp/ImpFormat.java @@ -150,14 +150,7 @@ public final class ImpFormat m_tableUniqueParent = ""; m_tableUniqueChild = ""; - if (m_AD_Table_ID == 311) // I_061_SyncItem - { - m_tableUnique1 = "H_UPC"; // UPC = unique - m_tableUnique2 = "Value"; - m_tableUniqueChild = "H_Commodity1"; // Vendor No may not be unique ! - m_tableUniqueParent = "H_PartnrID"; // Makes it unique - } - else if (m_AD_Table_ID == TABLE_I_PRODUCT) // I_Product + if (m_AD_Table_ID == TABLE_I_PRODUCT) // I_Product { m_tableUnique1 = "UPC"; // UPC = unique m_tableUnique2 = "Value"; @@ -266,26 +259,24 @@ public final class ImpFormat /************************************************************************* * Factory load - * @param name name + * @param Id id * @return Import Format */ - public static ImpFormat load (String name) + public static ImpFormat load (int Id) { - log.config(name); + if (log.isLoggable(Level.CONFIG))log.config(String.valueOf(Id)); ImpFormat retValue = null; - String sql = "SELECT * FROM AD_ImpFormat WHERE Name=?"; - int ID = 0; + String sql = "SELECT * FROM AD_ImpFormat WHERE AD_Impformat_ID=?"; PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = DB.prepareStatement(sql, null); - pstmt.setString (1, name); + pstmt.setInt (1, Id); rs = pstmt.executeQuery(); if (rs.next()) { - retValue = new ImpFormat (name, rs.getInt("AD_Table_ID"), rs.getString("FormatType")); - ID = rs.getInt ("AD_ImpFormat_ID"); + retValue = new ImpFormat (rs.getString("Name"), rs.getInt("AD_Table_ID"), rs.getString("FormatType")); if (X_AD_ImpFormat.FORMATTYPE_CustomSeparatorChar.equals(rs.getString(I_AD_ImpFormat.COLUMNNAME_FormatType))) { retValue.setSeparatorChar(rs.getString(I_AD_ImpFormat.COLUMNNAME_SeparatorChar)); } @@ -302,7 +293,7 @@ public final class ImpFormat rs = null; pstmt = null; } - loadRows (retValue, ID); + loadRows (retValue, Id); return retValue; } // getFormat diff --git a/org.adempiere.ui.swing/src/org/compiere/apps/form/VFileImport.java b/org.adempiere.ui.swing/src/org/compiere/apps/form/VFileImport.java index a88593eb7b..b4d94ced10 100644 --- a/org.adempiere.ui.swing/src/org/compiere/apps/form/VFileImport.java +++ b/org.adempiere.ui.swing/src/org/compiere/apps/form/VFileImport.java @@ -56,6 +56,7 @@ import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.Env; import org.compiere.util.Ini; +import org.compiere.util.KeyNamePair; import org.compiere.util.Msg; @@ -205,8 +206,8 @@ public class VFileImport extends CPanel private void dynInit() { // Load Formats - pickFormat.addItem(s_none); - String sql = MRole.getDefault().addAccessSQL("SELECT Name FROM AD_ImpFormat", "AD_ImpFormat", + pickFormat.addItem(new KeyNamePair(-1,s_none)); + String sql = MRole.getDefault().addAccessSQL("SELECT AD_Impformat_ID,Name FROM AD_ImpFormat WHERE isactive='Y'", "AD_ImpFormat", MRole.SQL_FULLYQUALIFIED, MRole.SQL_RO); PreparedStatement pstmt = null; ResultSet rs = null; @@ -215,7 +216,7 @@ public class VFileImport extends CPanel pstmt = DB.prepareStatement(sql, null); rs = pstmt.executeQuery(); while (rs.next()) - pickFormat.addItem(rs.getString(1)); + pickFormat.addItem(new KeyNamePair(rs.getInt(1),rs.getString(2))); } catch (SQLException e) { @@ -373,13 +374,13 @@ public class VFileImport extends CPanel // clear panel previewPanel.removeAll(); // - String formatName = pickFormat.getSelectedItem().toString(); - if (formatName.equals(s_none)) - return; - m_format = ImpFormat.load (formatName); + KeyNamePair pickFormatKNPair = (KeyNamePair)pickFormat.getSelectedItem(); + if (pickFormatKNPair.getName().equals(s_none)) + return; + m_format = ImpFormat.load (pickFormatKNPair.getKey()); if (m_format == null) { - ADialog.error(m_WindowNo, this, "FileImportNoFormat", formatName); + ADialog.error(m_WindowNo, this, "FileImportNoFormat", pickFormatKNPair.getName()); return; } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFileImport.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFileImport.java index 2a481c4a85..cbf6d2e917 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFileImport.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFileImport.java @@ -233,7 +233,7 @@ public class WFileImport extends ADForm implements EventListener // Load Formats pickFormat.appendItem(s_none, s_none); - String sql = MRole.getDefault().addAccessSQL("SELECT Name FROM AD_ImpFormat", "AD_ImpFormat", + String sql = MRole.getDefault().addAccessSQL("SELECT Name,AD_Impformat_ID FROM AD_ImpFormat WHERE isactive='Y'", "AD_ImpFormat", MRole.SQL_FULLYQUALIFIED, MRole.SQL_RO); PreparedStatement pstmt = null; ResultSet rs = null; @@ -243,7 +243,7 @@ public class WFileImport extends ADForm implements EventListener rs = pstmt.executeQuery(); while (rs.next()) - pickFormat.appendItem(rs.getString(1), rs.getString(1)); + pickFormat.appendItem(rs.getString(1), rs.getInt(2)); } catch (SQLException e) { @@ -451,12 +451,13 @@ public class WFileImport extends ADForm implements EventListener ListItem listitem = pickFormat.getSelectedItem(); - String formatName = (String)listitem.getValue(); + String formatName = (String)listitem.getLabel(); if (formatName.equals(s_none)) return; - - m_format = ImpFormat.load (formatName); + + int formatId = (Integer)listitem.getValue(); + m_format = ImpFormat.load (formatId); if (m_format == null) { From 7d91588bc96c2bd45fb9f385c14a2c7192e69700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Pe=C3=B1uela?= Date: Mon, 4 Mar 2013 23:07:57 -0500 Subject: [PATCH 5/5] IDEMPIERE-582 Setup Wizard scrolling bars / And improvements to IDEMPIERE-393 Setup wizards --- .../oracle/201302190934_IDEMPIERE-393.sql | 29 ++++ .../postgresql/201302190934_IDEMPIERE-393.sql | 29 ++++ .../server.product.launch | 2 +- .../webui/apps/form/WSetupWizard.java | 163 +++++++++--------- .../theme/default/css/theme.css.dsp | 51 ++++++ 5 files changed, 196 insertions(+), 78 deletions(-) create mode 100644 migration/i1.0a-release/oracle/201302190934_IDEMPIERE-393.sql create mode 100644 migration/i1.0a-release/postgresql/201302190934_IDEMPIERE-393.sql diff --git a/migration/i1.0a-release/oracle/201302190934_IDEMPIERE-393.sql b/migration/i1.0a-release/oracle/201302190934_IDEMPIERE-393.sql new file mode 100644 index 0000000000..cd870fb47c --- /dev/null +++ b/migration/i1.0a-release/oracle/201302190934_IDEMPIERE-393.sql @@ -0,0 +1,29 @@ +-- Feb 13, 2013 7:08:02 PM COT +-- +INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Client_ID,AD_Org_ID,Created) VALUES ('I','Zoom Action',200144,'D','8ba56d3a-1fff-4e6c-b1a6-34cbe8a50071','ZoomLabel','Y',TO_DATE('2013-02-13 19:08:01','YYYY-MM-DD HH24:MI:SS'),0,0,0,0,TO_DATE('2013-02-13 19:08:01','YYYY-MM-DD HH24:MI:SS')) +; + +-- Feb 13, 2013 7:08:02 PM COT +-- +INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200144 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID) +; + +-- Feb 13, 2013 7:25:37 PM COT +-- +INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Client_ID,AD_Org_ID,Created) VALUES ('I','Setup Task:',200145,'D','ed196c88-09f4-40a7-8959-e6747b890420','Setup Task','Y',TO_DATE('2013-02-13 19:25:37','YYYY-MM-DD HH24:MI:SS'),0,0,0,0,TO_DATE('2013-02-13 19:25:37','YYYY-MM-DD HH24:MI:SS')) +; + +-- Feb 13, 2013 7:25:37 PM COT +-- +INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200145 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID) +; + +-- Feb 13, 2013 7:28:34 PM COT +-- +UPDATE AD_Message SET Value='SetupTask',Updated=TO_DATE('2013-02-13 19:28:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Message_ID=200145 +; + +SELECT register_migration_script('201302190934_IDEMPIERE-393.sql') FROM dual +; + + diff --git a/migration/i1.0a-release/postgresql/201302190934_IDEMPIERE-393.sql b/migration/i1.0a-release/postgresql/201302190934_IDEMPIERE-393.sql new file mode 100644 index 0000000000..0dfacbe802 --- /dev/null +++ b/migration/i1.0a-release/postgresql/201302190934_IDEMPIERE-393.sql @@ -0,0 +1,29 @@ +-- Feb 13, 2013 7:08:02 PM COT +-- +INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Client_ID,AD_Org_ID,Created) VALUES ('I','Zoom Action',200144,'D','8ba56d3a-1fff-4e6c-b1a6-34cbe8a50071','ZoomLabel','Y',TO_TIMESTAMP('2013-02-13 19:08:01','YYYY-MM-DD HH24:MI:SS'),0,0,0,0,TO_TIMESTAMP('2013-02-13 19:08:01','YYYY-MM-DD HH24:MI:SS')) +; + +-- Feb 13, 2013 7:08:02 PM COT +-- +INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200144 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID) +; + +-- Feb 13, 2013 7:25:37 PM COT +-- +INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Client_ID,AD_Org_ID,Created) VALUES ('I','Setup Task:',200145,'D','ed196c88-09f4-40a7-8959-e6747b890420','Setup Task','Y',TO_TIMESTAMP('2013-02-13 19:25:37','YYYY-MM-DD HH24:MI:SS'),0,0,0,0,TO_TIMESTAMP('2013-02-13 19:25:37','YYYY-MM-DD HH24:MI:SS')) +; + +-- Feb 13, 2013 7:25:37 PM COT +-- +INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200145 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID) +; + +-- Feb 13, 2013 7:28:34 PM COT +-- +UPDATE AD_Message SET Value='SetupTask',Updated=TO_TIMESTAMP('2013-02-13 19:28:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Message_ID=200145 +; + +SELECT register_migration_script('201302190934_IDEMPIERE-393.sql') FROM dual +; + + diff --git a/org.adempiere.server-feature/server.product.launch b/org.adempiere.server-feature/server.product.launch index 62ef88a07d..e0776935f5 100644 --- a/org.adempiere.server-feature/server.product.launch +++ b/org.adempiere.server-feature/server.product.launch @@ -22,7 +22,7 @@ - + diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WSetupWizard.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WSetupWizard.java index a23e0fec1b..834b350205 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WSetupWizard.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WSetupWizard.java @@ -27,11 +27,8 @@ import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Checkbox; -import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.Label; import org.adempiere.webui.component.Panel; -import org.adempiere.webui.component.Row; -import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Textbox; import org.adempiere.webui.component.Window; import org.adempiere.webui.editor.WSearchEditor; @@ -54,11 +51,13 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zul.Borderlayout; +import org.zkoss.zul.Center; import org.zkoss.zul.Div; import org.zkoss.zul.East; import org.zkoss.zul.Iframe; import org.zkoss.zul.North; import org.zkoss.zul.Progressmeter; +import org.zkoss.zul.Separator; import org.zkoss.zul.Space; import org.zkoss.zul.Tree; import org.zkoss.zul.Treecell; @@ -66,8 +65,6 @@ import org.zkoss.zul.Treechildren; import org.zkoss.zul.Treeitem; import org.zkoss.zul.Treerow; import org.zkoss.zul.Vbox; -import org.zkoss.zul.West; - /** * View for Setup Wizard * @@ -86,6 +83,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL private Tree wfnodeTree; private Treeitem prevti = null; + private Label pretitleLabel = new Label(Msg.getMsg(Env.getCtx(), "SetupTask")); private Label titleLabel = new Label(); private Iframe helpFrame = new Iframe(); private Label notesLabel = new Label(Msg.getElement(Env.getCtx(), MWizardProcess.COLUMNNAME_Note)); @@ -97,6 +95,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL private Label statusLabel = new Label(); private WTableDirEditor statusField; + private Label bZoomLabel = new Label(Msg.getMsg(Env.getCtx(), "ZoomLabel")); private Button bRefresh = new Button(); private Button bOK = new Button(); private Button bNext = new Button(); @@ -111,8 +110,9 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL private static final String WIZARD_LABEL_STYLE = "font-weight: bold"; private boolean expandTree = false; - private Vbox east = new Vbox(); - private Vbox eastdown = new Vbox(); + private boolean allFinished = true; + private Vbox centerBox = new Vbox(); + private Vbox centerBoxdown = new Vbox(); private Vbox westdown = new Vbox(); private ArrayList openNodes = new ArrayList(); @@ -163,6 +163,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL protected void addWfEntry(MWorkflow wfwizard) { /* TODO: Color of workflow according to wizard status */ + allFinished = true; Treechildren treeChildren = wfnodeTree.getTreechildren(); Treeitem treeitemwf = new Treeitem(); treeChildren.appendChild(treeitemwf); @@ -185,6 +186,10 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL treeitemwf.setOpen(true); addNodes(wfwizard, treeitemwf); + if(allFinished && showColors.isChecked()){ + wizardLabel.setZclass("tree-wsetupwizard-finished-all"); + } + treeitemwf.setAttribute("AD_Workflow_ID", wfwizard.getAD_Workflow_ID()); if (prevti != null && prevti.getAttribute("AD_Workflow_ID") != null) { if (prevti.getAttribute("AD_Workflow_ID").equals(treeitemwf.getAttribute("AD_Workflow_ID"))) @@ -206,12 +211,27 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL if (node != null && showColors.isChecked()) { MWizardProcess wp = MWizardProcess.get(Env.getCtx(), node.getAD_WF_Node_ID(), Env.getAD_Client_ID(Env.getCtx())); String status = wp.getWizardStatus(); - if ( MWizardProcess.WIZARDSTATUS_Finished.equals(status) - || MWizardProcess.WIZARDSTATUS_Skipped.equals(status)) { - nodeLabel.setStyle("background-color: #90EE90;margin-left:20px;"); - } else { - nodeLabel.setStyle("background-color: #FFFF00;margin-left:20px;"); + if (MWizardProcess.WIZARDSTATUS_Finished.equals(status)){ + nodeLabel.setZclass("tree-wsetupwizard-finished"); + allFinished = allFinished && true; + }else if (MWizardProcess.WIZARDSTATUS_Skipped.equals(status)) { + nodeLabel.setZclass("tree-wsetupwizard-skipped"); + allFinished = allFinished && true; + }else if (MWizardProcess.WIZARDSTATUS_Delayed.equals(status)) { + nodeLabel.setZclass("tree-wsetupwizard-delayed"); + allFinished = allFinished && false; + }else if (MWizardProcess.WIZARDSTATUS_In_Progress.equals(status)) { + nodeLabel.setZclass("tree-wsetupwizard-in-progress"); + allFinished = allFinished && false; + }else if (MWizardProcess.WIZARDSTATUS_Pending.equals(status)) { + nodeLabel.setZclass("tree-wsetupwizard-pending"); + allFinished = allFinished && false; + }else { + nodeLabel.setZclass("tree-setupwizard-nostatus"); + allFinished = false; } + }else{ + nodeLabel.setStyle("margin-left:20px;"); } Div div = new Div(); @@ -245,6 +265,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL * Static init * @throws Exception */ + @SuppressWarnings("deprecation") private void jbInit () throws Exception { form.setWidth("99%"); @@ -279,12 +300,10 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL justmine.setTooltiptext(Msg.getMsg(Env.getCtx(), "JustMine")); justmine.addEventListener(Events.ON_CHECK,this); - showColors.setLabel("Show Colors"); showColors.setTooltiptext(Msg.getMsg(Env.getCtx(), "ShowColors")); showColors.addEventListener(Events.ON_CHECK,this); - - + North north = new North(); mainLayout.appendChild(north); north.appendChild(northPanel); @@ -292,6 +311,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL // northPanel.appendChild(progressbar); progressbar.setWidth("100%"); + progressbar.setZclass("progressmeter-setupwizard"); northPanel.appendChild(progressLabel); progressLabel.setWidth("100%"); progressLabel.setStyle("margin:0; padding:0; position: absolute; align: center; valign: center; border:0; text-align: center; "); @@ -304,62 +324,53 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL statusField = new WTableDirEditor("WizardStatus", true, false, true,wizardL); statusField.setValue(MWizardProcess.WIZARDSTATUS_Pending); - east.setVflex("1"); - east.setHflex("1"); - West west = new West(); - mainLayout.appendChild(west); - west.appendChild(east); - east.appendChild(wfnodeTree); + centerBox.setVflex("1"); + centerBox.setHflex("1"); + Center center = new Center(); + mainLayout.appendChild(center); + center.appendChild(centerBox); + centerBox.appendChild(wfnodeTree); + centerBox.setWidth("100%"); wfnodeTree.setVflex("1"); - wfnodeTree.setHflex("1"); - east.appendChild(eastdown); - eastdown.setOrient("horizontal"); - eastdown.appendChild(bExpand); - eastdown.appendChild(justmine); - eastdown.appendChild(showColors); - west.setAutoscroll(true); - west.setWidth("30%"); + centerBox.appendChild(centerBoxdown); + centerBoxdown.setOrient("horizontal"); + centerBoxdown.appendChild(bExpand); + centerBoxdown.appendChild(justmine); + centerBoxdown.appendChild(showColors); + center.setAutoscroll(true); + + Div div = new Div(); + div.setHeight("88%"); + div.setHflex("1"); - Grid gridView = new Grid(); - gridView.setStyle("margin:0; padding:0;"); - gridView.makeNoStrip(); - gridView.setOddRowSclass("even"); - - Rows rows = new Rows(); - gridView.appendChild(rows); - - Row row = new Row(); - rows.appendChild(row); - row.setAlign("center"); - row.appendChild(titleLabel); + div.setStyle("text-align:center "); + pretitleLabel.setStyle("font-weight: bold; font-size: 14px"); + div.appendChild(titleLabel); titleLabel.setStyle("font-weight: bold; font-size: 14px"); - - row = new Row(); - rows.appendChild(row); - row.appendChild(helpFrame); + titleLabel.setLeft("50%"); + + div.appendChild(helpFrame); helpFrame.setWidth("99%"); helpFrame.setHeight("90%"); - helpFrame.setStyle("min-height:300px; border: 1px solid lightgray; margin:auto"); - - row = new Row(); - rows.appendChild(row); - row.appendChild(notesLabel); - notesLabel.setWidth("100%"); + helpFrame.setStyle("border: 1px solid lightgray; margin:auto"); - row = new Row(); - rows.appendChild(row); - row.appendChild(notesField); + Div divNote = new Div(); + divNote.setStyle("text-align:left"); + Separator separator = new Separator(); + divNote.appendChild(separator); + divNote.appendChild(notesLabel); + + divNote.appendChild(notesField); notesField.setRows(4); - notesField.setWidth("100%"); + notesField.setWidth("99%"); MLookup lookup = MLookupFactory.get(Env.getCtx(), form.getWindowNo(), 0, 200913, DisplayType.Search); userField = new WSearchEditor(lookup, Msg.translate( Env.getCtx(), "AD_User_ID"), "", false, false, true); - row = new Row(); - rows.appendChild(row); westdown.setOrient("horizontal"); + westdown.appendChild(bZoomLabel); westdown.appendChild(bZoom); westdown.appendChild(userLabel); westdown.appendChild(userField.getComponent()); @@ -370,17 +381,26 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL westdown.appendChild(bRefresh); westdown.appendChild(bOK); westdown.appendChild(bNext); - row.appendChild(westdown); - row.setAlign("right"); + Div divButton = new Div(); + divButton.setAlign("right"); + divButton.appendChild(westdown); East east = new East(); mainLayout.appendChild(east); - east.appendChild(gridView); - east.setCollapsible(false); + div.appendChild(divNote); + div.appendChild(divButton); + east.appendChild(div); + east.setCollapsible(true); east.setSplittable(true); east.setWidth("70%"); + east.setAutoscroll(true); setNotesPanelVisible(false); + + MWorkflow wf = MWorkflow.get(Env.getCtx(), getWfWizards().get(0).get_ID()); + showInRightPanel(wf.getAD_Workflow_ID(), 0); + + } // jbInit private void refreshProgress() { @@ -396,7 +416,6 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL progressLabel.setText(msg); progressbar.setValue(percent); progressbar.setTooltiptext(msg); - progressbar.setStyle("background: #BBC2DB;"); } /** @@ -419,6 +438,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL showInRightPanel(0, m_node.getAD_WF_Node_ID()); } else if (e.getTarget() == bOK) { int userid = 0; + allFinished=true; if (!userField.isNullOrEmpty()) userid = (Integer)userField.getValue(); if (save(notesField.getText(), (String) statusField.getValue(), userid)) @@ -438,14 +458,8 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL } // actionPerformed private void showColors() { - if (!showColors.isChecked()) { - for (Treeitem nextItem : nextItems){ - Treeitem ti= nextItem; - if (ti.getLevel() != 0) { - ti.setStyle("background-color: #FFFFFF;"); - } - } - } + if (showColors.isChecked()) + allFinished = true; repaintTree(); } @@ -496,10 +510,6 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL } private void repaintTree() { - east.removeChild(wfnodeTree); - east.removeChild(eastdown); - east.setVflex("1"); - east.setHflex("1"); openNodes.removeAll(openNodes); for (Treeitem nextItem : nextItems) { if (nextItem.isOpen() && nextItem.getAttribute("AD_Workflow_ID") != null) { @@ -509,8 +519,6 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL prevti = wfnodeTree.getSelectedItem(); wfnodeTree.clear(); loadWizardNodes(); - east.appendChild(wfnodeTree); - east.appendChild(eastdown); refreshProgress(); } @@ -580,7 +588,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL setNotesPanelVisible(false); m_node = null; } - titleLabel.setText(title); + titleLabel.setText(pretitleLabel.getValue() + title); if (help != null) { AMedia media = new AMedia("Help", "html", "text/html", help.getBytes()); helpFrame.setContent(media); @@ -600,6 +608,7 @@ public class WSetupWizard extends SetupWizard implements IFormController, EventL statusField.setVisible(visible); userLabel.setVisible(visible); userField.setVisible(visible); + bZoomLabel.setVisible(visible); bZoom.setVisible(visible); } diff --git a/org.adempiere.ui.zk/theme/default/css/theme.css.dsp b/org.adempiere.ui.zk/theme/default/css/theme.css.dsp index 4f8980b53e..5880f4981e 100644 --- a/org.adempiere.ui.zk/theme/default/css/theme.css.dsp +++ b/org.adempiere.ui.zk/theme/default/css/theme.css.dsp @@ -1220,6 +1220,57 @@ tbody.z-grid-empty-body td { font-weight: normal; } +<%-- Tree nodes configurable on Setup Wizard --%> +.tree-wsetupwizard-finished { + background-color: #90EE90; + margin-left:20px +} + +.tree-wsetupwizard-skipped { + background-color: #00FF00; + margin-left:20px +} + +.tree-wsetupwizard-delayed { + background-color: #0080FF; + margin-left:20px; +} + +.tree-wsetupwizard-in-progress { + background-color: #FFFF33; + margin-left:20px; +} + +.tree-wsetupwizard-pending { + background-color: #FFFF00; + margin-left:20px; +} + +.tree-setupwizard-nostatus{ + margin-left:20px; +} + +.tree-wsetupwizard-finished-all { + background-color: #90EE90; +} + +.progressmeter-setupwizard { +background: #FFFF00 repeat-x 0 0 ; +background-image: none; +border: 1px solid #CFCFCF; +text-align: left; +height: 20px; +overflow: hidden; +} +.progressmeter-setupwizard-img { +display: inline-block; +background: #90EE90; +background-image: none; +height: 20px; +line-height: 0; +font-size: 0; +} +. .menu-search-toggle-box { display: inline-block; border: 1px solid #ababab;