/* * Decompiled with CFR 0.152. * * Could not load the following classes: * com.tridium.ui.theme.Theme * com.tridium.workbench.console.BConsole * com.tridium.workbench.transfer.TransferUtil * javax.baja.gx.BFont * javax.baja.gx.BImage * javax.baja.gx.BInsets * javax.baja.gx.Graphics * javax.baja.naming.BOrd * javax.baja.naming.ViewQuery * javax.baja.nre.util.SortUtil * javax.baja.sys.Action * javax.baja.sys.BComponent * javax.baja.sys.BComponentEvent * javax.baja.sys.BFacets * javax.baja.sys.BIcon * javax.baja.sys.BObject * javax.baja.sys.BString * javax.baja.sys.BValue * javax.baja.sys.BVector * javax.baja.sys.Context * javax.baja.sys.Property * javax.baja.sys.Slot * javax.baja.sys.Sys * javax.baja.sys.Type * javax.baja.ui.BDialog * javax.baja.ui.BLabel * javax.baja.ui.BNullWidget * javax.baja.ui.BProgressDialog * javax.baja.ui.BProgressDialog$Worker * javax.baja.ui.BToolBar * javax.baja.ui.BWidget * javax.baja.ui.CommandArtifact * javax.baja.ui.enums.BOrientation * javax.baja.ui.enums.BScrollBarPolicy * javax.baja.ui.event.BMouseEvent * javax.baja.ui.pane.BBorderPane * javax.baja.ui.pane.BEdgePane * javax.baja.ui.pane.BExpandablePane * javax.baja.ui.pane.BScrollPane * javax.baja.ui.pane.BSplitPane * javax.baja.ui.table.BTable * javax.baja.ui.table.TableCellRenderer * javax.baja.ui.table.TableCellRenderer$Cell * javax.baja.ui.table.TableModel * javax.baja.ui.transfer.TransferContext * javax.baja.util.BFolder * javax.baja.util.BNameMap * javax.baja.util.Lexicon * javax.baja.workbench.BWbShell * javax.baja.workbench.CannotSaveException * javax.baja.workbench.component.table.BComponentTable * javax.baja.workbench.component.table.ComponentTableCellRenderer * javax.baja.workbench.mgr.BAbstractManager * javax.baja.workbench.mgr.BMgrTable * javax.baja.workbench.mgr.MgrColumn * javax.baja.workbench.mgr.MgrColumn$Name * javax.baja.workbench.mgr.MgrController * javax.baja.workbench.mgr.MgrController$IMgrCommand * javax.baja.workbench.mgr.MgrController$MgrCommand * javax.baja.workbench.mgr.MgrModel * javax.baja.workbench.mgr.folder.BFolderManager * javax.baja.workbench.mgr.folder.FolderController * javax.baja.workbench.mgr.folder.FolderModel */ package com.tridium.program.ui; import com.tridium.program.BCode; import com.tridium.program.BProgram; import com.tridium.program.module.BProgramModule; import com.tridium.program.module.IBuildListener; import com.tridium.program.module.ValidateModel; import com.tridium.program.ui.BBuilderTable; import com.tridium.program.ui.BFieldSheet; import com.tridium.program.ui.BProgramEditor; import com.tridium.program.ui.Compiler; import com.tridium.program.ui.SourceWriter; import com.tridium.ui.theme.Theme; import com.tridium.workbench.console.BConsole; import com.tridium.workbench.transfer.TransferUtil; import java.io.FileWriter; import java.io.Writer; import java.util.HashMap; import java.util.Iterator; import javax.baja.gx.BFont; import javax.baja.gx.BImage; import javax.baja.gx.BInsets; import javax.baja.gx.Graphics; import javax.baja.naming.BOrd; import javax.baja.naming.ViewQuery; import javax.baja.nre.util.SortUtil; import javax.baja.sys.Action; import javax.baja.sys.BComponent; import javax.baja.sys.BComponentEvent; import javax.baja.sys.BFacets; import javax.baja.sys.BIcon; import javax.baja.sys.BObject; import javax.baja.sys.BString; import javax.baja.sys.BValue; import javax.baja.sys.BVector; import javax.baja.sys.Context; import javax.baja.sys.Property; import javax.baja.sys.Slot; import javax.baja.sys.Sys; import javax.baja.sys.Type; import javax.baja.ui.BDialog; import javax.baja.ui.BLabel; import javax.baja.ui.BNullWidget; import javax.baja.ui.BProgressDialog; import javax.baja.ui.BToolBar; import javax.baja.ui.BWidget; import javax.baja.ui.CommandArtifact; import javax.baja.ui.enums.BOrientation; import javax.baja.ui.enums.BScrollBarPolicy; import javax.baja.ui.event.BMouseEvent; import javax.baja.ui.pane.BBorderPane; import javax.baja.ui.pane.BEdgePane; import javax.baja.ui.pane.BExpandablePane; import javax.baja.ui.pane.BScrollPane; import javax.baja.ui.pane.BSplitPane; import javax.baja.ui.table.BTable; import javax.baja.ui.table.TableCellRenderer; import javax.baja.ui.table.TableModel; import javax.baja.ui.transfer.TransferContext; import javax.baja.util.BFolder; import javax.baja.util.BNameMap; import javax.baja.util.Lexicon; import javax.baja.workbench.BWbShell; import javax.baja.workbench.CannotSaveException; import javax.baja.workbench.component.table.BComponentTable; import javax.baja.workbench.component.table.ComponentTableCellRenderer; import javax.baja.workbench.mgr.BAbstractManager; import javax.baja.workbench.mgr.BMgrTable; import javax.baja.workbench.mgr.MgrColumn; import javax.baja.workbench.mgr.MgrController; import javax.baja.workbench.mgr.MgrModel; import javax.baja.workbench.mgr.folder.BFolderManager; import javax.baja.workbench.mgr.folder.FolderController; import javax.baja.workbench.mgr.folder.FolderModel; public class BProgramModuleBuilder extends BFolderManager { public static final Action handleSelection = BProgramModuleBuilder.newAction((int)4, null); public static final Action handleModified = BProgramModuleBuilder.newAction((int)4, null); public static final Type TYPE = Sys.loadType((Class)(class$com$tridium$program$ui$BProgramModuleBuilder == null ? (class$com$tridium$program$ui$BProgramModuleBuilder = BProgramModuleBuilder.class$("com.tridium.program.ui.BProgramModuleBuilder")) : class$com$tridium$program$ui$BProgramModuleBuilder)); Lexicon lex = Lexicon.make((Class)(class$com$tridium$program$ui$BProgramModuleBuilder == null ? (class$com$tridium$program$ui$BProgramModuleBuilder = BProgramModuleBuilder.class$("com.tridium.program.ui.BProgramModuleBuilder")) : class$com$tridium$program$ui$BProgramModuleBuilder)); static final BImage CHECK = BImage.make((BIcon)BIcon.std((String)"check.png")); static final BImage BLANK = BImage.make((BIcon)BIcon.std((String)"blank.png")); BProgramModule module; BSplitPane split; BFieldSheet sheet = new BFieldSheet(); HashMap verify; static /* synthetic */ Class class$com$tridium$program$ui$BProgramModuleBuilder; public void handleSelection() { this.invoke(handleSelection, null, null); } public void handleModified() { this.invoke(handleModified, null, null); } public Type getType() { return TYPE; } public void doLoadValue(BObject bObject, Context context) { this.module = (BProgramModule)bObject; this.verify = new HashMap(); this.verify.put(this.module, ValidateModel.make(this.module)); super.doLoadValue(bObject, context); } protected void init() { super.init(); ViewQuery viewQuery = this.getWbShell().getActiveOrdTarget().getViewQuery(); if (viewQuery != null) { try { String string = viewQuery.getParameter("program"); int n = ((BBuilderTable)this.getModel().getTable()).getRowOfProgram(string); this.getModel().getTable().getSelection().select(n); } catch (Exception exception) { // empty catch block } } } public void handleComponentEvent(BComponentEvent bComponentEvent) { super.handleComponentEvent(bComponentEvent); BComponent bComponent = bComponentEvent.getSourceComponent(); BValue bValue = bComponentEvent.getValue(); if (bComponent == this.module) { this.verify.put(this.module, ValidateModel.make(this.module)); } else if (bComponentEvent.getId() == 3) { this.verify.put(this.getSelectedProgram(), ValidateModel.make(this.getSelectedProgram())); this.handleSelection(); } else if (bValue instanceof BProgram) { switch (bComponentEvent.getId()) { case 0: case 1: { this.verify.put(bValue, ValidateModel.make((BProgram)bValue)); this.handleSelection(); break; } case 2: { if (bValue == this.getSelectedProgram()) { this.getModel().getTable().getSelection().deselectAll(); } this.verify.remove(bValue); } } this.verify.put(this.module, ValidateModel.make(this.module)); } super.handleComponentEvent(bComponentEvent); } protected BObject doSaveValue(BObject bObject, Context context) throws CannotSaveException, Exception { try { this.sheet.saveValue((BObject)this.module, context); this.verify.put(this.module, ValidateModel.make(this.module)); } catch (Exception exception) { ((ValidateModel)((Object)this.verify.get((Object)this.module))).err(exception.getMessage()); throw exception; } finally { this.getModel().getTable().getSelection().select(-1); } return this.module; } public void doHandleModified() { if (this.sheet.isModified()) { this.getController().updateCommands(); } } protected MgrModel makeModel() { return new BuilderModel(this); } protected MgrController makeController() { return new Controller(this); } public void doHandleSelection() { ValidateModel validateModel = (ValidateModel)((Object)this.verify.get((Object)this.module)); BProgram bProgram = this.getSelectedProgram(); if (bProgram != null) { validateModel = (ValidateModel)((Object)this.verify.get((Object)bProgram)); } if (validateModel.getTable() != null) { validateModel.setTable(null); } this.split.setWidget2((BWidget)new BTable((TableModel)validateModel)); if (this.split.getDividerPosition() > 75.0) { this.split.setDividerPosition(75.0); this.split.relayout(); } } private BProgram getSelectedProgram() { return (BProgram)this.getModel().getTable().getSelectedComponent(); } static /* synthetic */ Class class$(String string) { try { return Class.forName(string); } catch (ClassNotFoundException classNotFoundException) { throw new NoClassDefFoundError(classNotFoundException.getMessage()); } } class BuilderModel extends FolderModel { MgrColumn colProgramName = new ProgName(1); MgrColumn colComp = new CompName(); MgrColumn[] columns = new MgrColumn[]{this.colProgramName, this.colComp}; public BuilderModel(BFolderManager bFolderManager) { super(bFolderManager); } protected BMgrTable makeTable() { BBuilderTable bBuilderTable = new BBuilderTable((MgrModel)this); BProgramModuleBuilder.this.linkTo((BComponent)bBuilderTable, (Slot)BTable.selectionModified, (Slot)handleSelection); return bBuilderTable; } public Type getFolderType() { return BFolder.TYPE; } public Type[] getIncludeTypes() { return new Type[]{BProgram.TYPE}; } public boolean accept(BComponent bComponent) { if (bComponent.getParent().equals((Object)BProgramModuleBuilder.this.module.getPrograms())) { BProgramModuleBuilder.this.verify.put(bComponent, ValidateModel.make((BProgram)bComponent)); return true; } return false; } public int getSubscribeDepth() { return 2; } protected String makeTableTitle() { return BProgramModuleBuilder.this.lex.getText("modBuilder.title"); } public BWidget makePane() { BProgramModuleBuilder.this.sheet = new BFieldSheet(); BProgramModuleBuilder.this.sheet.loadValue((BObject)BProgramModuleBuilder.this.module, BProgramModuleBuilder.this.getCurrentContext()); BProgramModuleBuilder.this.linkTo((BComponent)BProgramModuleBuilder.this.sheet, (Slot)BFieldSheet.pluginModified, (Slot)BAbstractManager.setModified); BProgramModuleBuilder.this.linkTo((BComponent)BProgramModuleBuilder.this.sheet, (Slot)BFieldSheet.pluginModified, (Slot)handleModified); BExpandablePane bExpandablePane = new BExpandablePane(); BEdgePane bEdgePane = new BEdgePane(); bEdgePane.setCenter((BWidget)BProgramModuleBuilder.this.sheet); bExpandablePane.setSummary((BWidget)new BLabel(BProgramModuleBuilder.this.lex.getText("modBuilder.settings"))); bExpandablePane.setExpansion((BWidget)new BBorderPane((BWidget)bEdgePane, 0.0, 0.0, 5.0, 0.0)); bExpandablePane.setExpanded(true); BWidget bWidget = super.makePane(); BProgramModuleBuilder.this.split = new BSplitPane(BOrientation.vertical, 75.0); BProgramModuleBuilder.this.split.setWidget1(bWidget); BProgramModuleBuilder.this.split.setWidget2((BWidget)new BNullWidget()); BEdgePane bEdgePane2 = new BEdgePane(); bEdgePane2.setTop((BWidget)bExpandablePane); bEdgePane2.setCenter((BWidget)BProgramModuleBuilder.this.split); return bEdgePane2; } protected MgrColumn[] makeColumns() { return this.columns; } protected class CompName extends MgrColumn { public CompName() { super("BComponent Name", 6); } public Object get(Object object) { return BProgramModule.toComponentName((BProgram)((Object)object)); } } protected class ProgName extends MgrColumn.Name { private CellRenderer rend = new CellRenderer(); public ProgName(int n) { super(n); } public TableCellRenderer getCellRenderer() { return this.rend; } private class CellRenderer extends ComponentTableCellRenderer { private CellRenderer() { } public double getPreferredCellWidth(TableCellRenderer.Cell cell) { return 20.0 + this.getFont(cell).width("VeryLongBProgramNameExample"); } public void paintCell(Graphics graphics, TableCellRenderer.Cell cell) { this.paintCellBackground(graphics, cell); double d = 2.0; double d2 = (cell.height - 16.0) / 2.0; ValidateModel validateModel = (ValidateModel)((Object)((BuilderModel)((ProgName)ProgName.this).BuilderModel.this).BProgramModuleBuilder.this.verify.get(this.getComponentTable().getComponentAt(cell.row))); graphics.drawImage(validateModel.getProgramStatusIcon(), d, d2); String string = (String)cell.value; BFont bFont = this.getFont(cell); graphics.setFont(bFont); graphics.drawString(string, d += 20.0, (cell.height + bFont.getAscent() - bFont.getDescent()) / 2.0); } protected BComponentTable getComponentTable() { return ProgName.this.getManager().getModel().getTable(); } } } } class Controller extends FolderController { CompileCommand compileCmd; BuildCommand buildCmd; EditDepends dependsCmd; public Controller(BFolderManager bFolderManager) { super(bFolderManager); this.compileCmd = new CompileCommand((BWidget)bFolderManager); this.buildCmd = new BuildCommand((BWidget)bFolderManager); this.dependsCmd = new EditDepends((BWidget)bFolderManager); } protected MgrController.IMgrCommand[] makeCommands() { this.allDescendants.setSelected(true); return new MgrController.IMgrCommand[]{this.edit, this.compileCmd, this.buildCmd, this.dependsCmd}; } public void cellDoubleClicked(BMgrTable bMgrTable, BMouseEvent bMouseEvent, int n, int n2) { BProgram bProgram = (BProgram)bMgrTable.getComponentAt(n); BWbShell bWbShell = bMgrTable.getManager().getWbShell(); bWbShell.hyperlink(BOrd.make((BOrd)bProgram.getNavOrd(), (String)"view:program:ProgramEditor")); } public BToolBar makeToolBar() { return super.makeToolBar(); } public void updateCommands() { super.updateCommands(); boolean bl = true; Iterator iterator = BProgramModuleBuilder.this.verify.values().iterator(); while (iterator.hasNext()) { if (((ValidateModel)((Object)iterator.next())).getErrCount() <= 0) continue; bl = false; break; } if (BProgramModuleBuilder.this.sheet != null && BProgramModuleBuilder.this.sheet.isModified()) { bl = false; } this.buildCmd.setEnabled(bl); this.dependsCmd.setEnabled(bl); this.compileCmd.setEnabled(!bl && !BProgramModuleBuilder.this.sheet.isModified()); } public CommandArtifact drop(BMgrTable bMgrTable, TransferContext transferContext) throws Exception { return TransferUtil.insert((BWidget)BProgramModuleBuilder.this, (TransferContext)transferContext, (BObject)BProgramModuleBuilder.this.module.getPrograms(), null); } protected class EditDepends extends MgrController.MgrCommand { public EditDepends(BWidget bWidget) { super(bWidget, ((Controller)Controller.this).BProgramModuleBuilder.this.lex, "modBuilder.cmd.editDepends"); this.setFlags(3); } public CommandArtifact doInvoke() throws Exception { BVector bVector = new BVector(); BFieldSheet bFieldSheet = this.makeDependsSheet(bVector); BScrollPane bScrollPane = new BScrollPane((BWidget)new BBorderPane((BWidget)bFieldSheet, BInsets.make((double)10.0))); bScrollPane.setVpolicy(BScrollBarPolicy.always); bScrollPane.setViewportBackground(Theme.widget().getControlBackground()); while (true) { if (2 == BDialog.open((BWidget)BProgramModuleBuilder.this, (String)((Controller)Controller.this).BProgramModuleBuilder.this.lex.getText("modBuilder.cmd.editDepends.title"), (Object)bScrollPane, (int)3)) { return null; } try { bFieldSheet.saveValue((BObject)bVector, null); } catch (Exception exception) { BDialog.error((BWidget)BProgramModuleBuilder.this, (String)"Error", (Object)exception.getMessage(), (Throwable)exception); continue; } break; } BNameMap bNameMap = BNameMap.DEFAULT; Property[] propertyArray = bVector.getPropertiesArray(); for (int i = 0; i < propertyArray.length; ++i) { String string = propertyArray[i].getName(); String string2 = bVector.getString(propertyArray[i]); bNameMap = BNameMap.make((BNameMap)bNameMap, (String)string, (String)string2); } ((Controller)Controller.this).BProgramModuleBuilder.this.module.setDependencies(bNameMap); return null; } private BFieldSheet makeDependsSheet(BVector bVector) { BFieldSheet bFieldSheet = new BFieldSheet(true); BFacets bFacets = BFacets.make((String)"validator", (String)"baja:VersionValidator"); bFacets = BFacets.make((BFacets)bFacets, (BFacets)BFacets.make((String)"fieldSheetShow", (boolean)true)); bFacets = BFacets.make((BFacets)bFacets, (BFacets)BFacets.make((String)"iconOverride", (String)"module://icons/x16/module.png")); BNameMap bNameMap = BProgramModule.rationalizeDependecies(((Controller)Controller.this).BProgramModuleBuilder.this.module); Object[] objectArray = bNameMap.list(); SortUtil.sort((Object[])objectArray); for (int i = 0; i < objectArray.length; ++i) { bVector.add((String)objectArray[i], (BValue)BString.make((String)bNameMap.get((String)objectArray[i]).getFormat())); bVector.setFacets(bVector.getSlot((String)objectArray[i]), bFacets); } bFieldSheet.loadValue((BObject)bVector); return bFieldSheet; } } protected class BuildCommand extends MgrController.MgrCommand { public BuildCommand(BWidget bWidget) { super(bWidget, ((Controller)Controller.this).BProgramModuleBuilder.this.lex, "modBuilder.cmd.build"); this.setFlags(7); } public CommandArtifact doInvoke() throws Exception { BProgramModuleBuilder.this.saveValue(); BProgressDialog.open((BWidget)this.getOwner(), (String)((Controller)Controller.this).BProgramModuleBuilder.this.lex.getText("modBuilder.cmd.build.title"), (BProgressDialog.Worker)new BuildWorker()); return null; } class BuildWorker extends BProgressDialog.Worker implements IBuildListener { int curStep = 0; BuildWorker() { } public void setNumBuildSteps(int n) { this.getDialog().getProgressBar().setMax((double)n); } public void nextStep(String string) { this.getDialog().getProgressBar().setValue((double)(++this.curStep)); this.updateDesc(string); } public void updateDesc(String string) { this.getDialog().getMessageLabel().setText(string); } public BWidget getOwner() { return BProgramModuleBuilder.this; } public void doCancel() throws Exception { } public void doRun() throws Exception { try { ((Controller)((BuildCommand)BuildCommand.this).Controller.this).BProgramModuleBuilder.this.module.buildModule(this); } catch (Exception exception) { BDialog.error((BWidget)this.getDialog(), (String)((Controller)((BuildCommand)BuildCommand.this).Controller.this).BProgramModuleBuilder.this.lex.getText("programModule.nbuild.fail"), (Object)exception.getMessage(), (Throwable)exception); } } } } protected class CompileCommand extends MgrController.MgrCommand { public CompileCommand(BWidget bWidget) { super(bWidget, ((Controller)Controller.this).BProgramModuleBuilder.this.lex, "modBuilder.cmd.compile"); this.setFlags(7); } public CommandArtifact doInvoke() throws Exception { BProgram[] bProgramArray = ((Controller)Controller.this).BProgramModuleBuilder.this.module.listPrograms(); for (int i = 0; i < bProgramArray.length; ++i) { if (((ValidateModel)((Object)((Controller)Controller.this).BProgramModuleBuilder.this.verify.get((Object)bProgramArray[i]))).getErrCount() == 0) continue; try { PCompiler pCompiler = new PCompiler(this.getOwner(), bProgramArray[i]); pCompiler.compile(BCode.generateClassName(), bProgramArray[i].getCode(), null); continue; } catch (Exception exception) { exception.printStackTrace(); } } return null; } private class PCompiler extends Compiler { BProgram program; BProgramEditor pe; public PCompiler(BWidget bWidget, BProgram bProgram) { super(bWidget); this.program = bProgram; this.pe = new BProgramEditor(); this.pe.loadValue((BObject)bProgram); } public void writeSource(FileWriter fileWriter, String string) throws Exception { SourceWriter sourceWriter = new SourceWriter((Writer)fileWriter, this.pe); sourceWriter.generate(this.className); } public synchronized void compile(String string, BCode bCode, String string2) throws Exception { super.compile(string, bCode, string2); this.wait(); } public synchronized void consoleExecDone(BConsole bConsole, int n) { try { super.consoleExecDone(bConsole, n); } finally { this.notifyAll(); } } public void compileFailed(BConsole bConsole) throws Exception { bConsole.cls(); ((ValidateModel)((Object)((Controller)((CompileCommand)CompileCommand.this).Controller.this).BProgramModuleBuilder.this.verify.get((Object)this.program))).err(((Controller)((CompileCommand)CompileCommand.this).Controller.this).BProgramModuleBuilder.this.lex.getText("vprogram.err.compile")); } public void compileSuccess(BConsole bConsole) throws Exception { super.compileSuccess(bConsole); int n = this.program.getCode().getChecksum(); int n2 = this.pe.computeChecksum(this.program.getCode().getSource()); if (n != n2) { this.program.getCode().setChecksum(n2); BProgramModuleBuilder.this.handleComponentEvent(new BComponentEvent(0, (BComponent)((Controller)((CompileCommand)CompileCommand.this).Controller.this).BProgramModuleBuilder.this.module.getPrograms(), null, (BValue)this.program)); } } } } } }