package org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.wizard.cellreference; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.PriceConfigComposite; import org.nightlabs.jfire.trade.admin.ui.resource.Messages; import org.nightlabs.jseditor.ui.IJSEditor; public class CellReferencePage extends AbstractCellReferencePage{ private PriceConfigComposite priceConfigComposite = null; public CellReferencePage(IJSEditor targetEditor, PriceConfigComposite priceConfigComposite) { super(targetEditor, priceConfigComposite); this.priceConfigComposite = priceConfigComposite; } @Override protected List<Composite> createDimensionTabItems(TabFolder tabFolder) { List<Composite> pageCompositeList = new ArrayList<Composite>(); TabItem customerGroupTabItem = new TabItem(tabFolder, SWT.NONE); customerGroupTabItem.setText(Messages.getString("org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.wizard.cellreference.CellReferencePage.customerGroupTabItem.text")); //$NON-NLS-1$ CustomerGroupComposite cgc = new CustomerGroupComposite(this, tabFolder); customerGroupTabItem.setControl(cgc); pageCompositeList.add(cgc); TabItem tariffTabItem = new TabItem(tabFolder, SWT.NONE); tariffTabItem.setText(Messages.getString("org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.wizard.cellreference.CellReferencePage.tariffTabItem.text")); //$NON-NLS-1$ TariffComposite tc = new TariffComposite(this, tabFolder); tariffTabItem.setControl(tc); pageCompositeList.add(tc); TabItem currencyTabItem = new TabItem(tabFolder, SWT.NONE); currencyTabItem.setText(Messages.getString("org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.wizard.cellreference.CellReferencePage.currencyTabItem.text")); //$NON-NLS-1$ CurrencyComposite cc = new CurrencyComposite(this, tabFolder); currencyTabItem.setControl(cc); pageCompositeList.add(cc); ProductTypeComposite pc = new ProductTypeComposite(this, tabFolder, priceConfigComposite); if (pc.getCellReferenceProductTypeSelector() == null) pc.dispose(); else { TabItem productTypeTabItem = new TabItem(tabFolder, SWT.NONE); productTypeTabItem.setText(Messages.getString("org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.wizard.cellreference.CellReferencePage.productTypeTabItem.text")); //$NON-NLS-1$ productTypeTabItem.setControl(pc); pageCompositeList.add(pc); } TabItem priceFragmentTabItem = new TabItem(tabFolder, SWT.NONE); priceFragmentTabItem.setText(Messages.getString("org.nightlabs.jfire.trade.admin.ui.gridpriceconfig.wizard.cellreference.CellReferencePage.priceFragmentTypeTabItem.text")); //$NON-NLS-1$ PriceFragmentTypeComposite pfc = new PriceFragmentTypeComposite(this, tabFolder); priceFragmentTabItem.setControl(pfc); pageCompositeList.add(pfc); return pageCompositeList; } private Map<String, String> scriptMap = new HashMap<String, String>(); private String generatedScript = null; public void setDimensionScript(String dimensionKey, String dimensionScript) { scriptMap.put(dimensionKey, dimensionScript); generateScript(); } public void clearDimensionScript(String dimensionKey){ if (scriptMap.containsKey(dimensionKey)) { scriptMap.remove(dimensionKey); generateScript(); }//if } private void generateScript(){ StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder .append(CellReferenceWizard.NEWLINE) .append("cell.resolvePriceCellsAmount") //$NON-NLS-1$ .append(CellReferenceWizard.L_BRACKET) .append(CellReferenceWizard.NEWLINE) .append(CellReferenceWizard.TAB); for (Iterator<String> itScript = scriptMap.values().iterator(); itScript.hasNext(); ) { String script = itScript.next(); scriptBuilder.append(script); if (itScript.hasNext()){ scriptBuilder.append(",").append(CellReferenceWizard.NEWLINE).append(CellReferenceWizard.TAB); //$NON-NLS-1$ } } scriptBuilder .append(CellReferenceWizard.NEWLINE) .append(CellReferenceWizard.R_BRACKET); generatedScript = scriptBuilder.toString(); getSourcePreviewComposite().setDocumentText(generatedScript); } public String getGeneratedScript(){ return generatedScript; } }