// Copyright (C) 2011 Associated Universities, Inc. Washington DC, USA. // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // // Correspondence concerning GBT software should be addressed as follows: // GBT Operations // National Radio Astronomy Observatory // P. O. Box 2 // Green Bank, WV 24944-0002 USA package edu.nrao.dss.client; import java.util.ArrayList; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.http.client.RequestBuilder; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.Style.Orientation; import com.extjs.gxt.ui.client.Style.Scroll; import com.extjs.gxt.ui.client.Style.VerticalAlignment; import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.FormEvent; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.util.Margins; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.HorizontalPanel; import com.extjs.gxt.ui.client.widget.Html; import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.TabItem; import com.extjs.gxt.ui.client.widget.TabPanel; import com.extjs.gxt.ui.client.widget.VerticalPanel; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.layout.AccordionLayout; import com.extjs.gxt.ui.client.widget.layout.ColumnData; import com.extjs.gxt.ui.client.widget.layout.ColumnLayout; import com.extjs.gxt.ui.client.widget.layout.FitLayout; import com.extjs.gxt.ui.client.widget.layout.RowData; import com.extjs.gxt.ui.client.widget.layout.RowLayout; import com.extjs.gxt.ui.client.widget.layout.TableData; import com.extjs.gxt.ui.client.widget.layout.TableLayout; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.RootPanel; import edu.nrao.dss.client.data.DataGrid; import edu.nrao.dss.client.data.InputData; import edu.nrao.dss.client.data.ResultsData; import edu.nrao.dss.client.forms.DataForm; import edu.nrao.dss.client.forms.GeneralForm; import edu.nrao.dss.client.forms.HardwareForm; import edu.nrao.dss.client.forms.SourceForm; /** * Entry point classes define onModuleLoad(). */ public class Calculator_ui implements EntryPoint { public TabPanel tabPanel; public void onModuleLoad() { initLayout(); } private void initLayout(){ // Root Content Panel ContentPanel rcp = new ContentPanel(); rcp.setFrame(true); rcp.setHeading("Sensitivity Calculator 2.4.2"); TableLayout tableLayout = new TableLayout(2); tableLayout.setCellVerticalAlign(VerticalAlignment.TOP); rcp.setLayout(tableLayout); TableData tdLeft = new TableData(); tdLeft.setVerticalAlign(VerticalAlignment.TOP); tdLeft.setWidth("550"); TableData tdRight = new TableData(); tdRight.setVerticalAlign(VerticalAlignment.TOP); tdRight.setWidth("550"); final GeneralForm generalForm = new GeneralForm(); final HardwareForm hardwareForm = new HardwareForm(); final SourceForm sourceForm = new SourceForm(); final DataForm dataForm = new DataForm(); generalForm.addListener(Events.Submit, new Listener() { @Override public void handleEvent(FormEvent be) { if (hardwareForm.isValid()) { hardwareForm.submit(); } } }); hardwareForm.addListener(Events.Submit, new Listener() { @Override public void handleEvent(FormEvent be) { if (sourceForm.isValid()) { sourceForm.submit(); } } }); sourceForm.addListener(Events.Submit, new Listener() { @Override public void handleEvent(FormEvent be) { if (dataForm.isValid()) { dataForm.submit(); } } }); dataForm.addListener(Events.Submit, new Listener() { @Override public void handleEvent(FormEvent be) { ResultsData.loadResults(); InputData.loadInput(); } }); generalForm.addObserver(sourceForm); hardwareForm.addObserver(sourceForm); hardwareForm.addObserver(dataForm); sourceForm.addObserver(dataForm); ContentPanel questions = new ContentPanel(); questions.setHeaderVisible(false); questions.setHeading("Questions"); questions.setLayout(new RowLayout()); questions.setScrollMode(Scroll.AUTOY); questions.setHeight(860); //questions.setAutoHeight(true); questions.setBorders(true); //questions.setAutoWidth(true); questions.setWidth(550); questions.add(generalForm); questions.add(hardwareForm); questions.add(sourceForm); questions.add(dataForm); rcp.add(questions, tdLeft); ContentPanel right = new ContentPanel(); //right.setHeaderVisible(false); right.setHeading("Controls"); right.setLayout(new TableLayout()); ContentPanel controls = new ContentPanel(); controls.setLayout(new RowLayout(Orientation.HORIZONTAL)); controls.setHeaderVisible(false); controls.setBorders(false); controls.setSize(200, 30); Button update = new Button("Update Results"); update.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { if (generalForm.isValid()) { generalForm.submit(); } } }); Button save = new Button("Save to File"); save.addSelectionListener(new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { Window.Location.assign("/calculator/results/text"); } }); TableData td = new TableData(); td.setHorizontalAlign(HorizontalAlignment.CENTER); td.setMargin(20); td.setPadding(10); controls.add(update, new RowData(-1, -1, new Margins(0, 4, 0, 4))); controls.add(save, new RowData(-1, -1, new Margins(0, 4, 0, 4))); right.add(controls, td); TabPanel results = new TabPanel(); results.setLayoutData(new RowLayout()); results.setHeight(800); //results.setAutoHeight(true); //results.setAutoWidth(true); results.setWidth(600); TabItem resultsFormatted = new TabItem("Results"); resultsFormatted.setScrollMode(Scroll.AUTO); resultsFormatted.addStyleName("pad-text"); resultsFormatted.setAutoLoad(ResultsData.getResultsRB()); results.add(resultsFormatted); TabItem resultsGrid = new TabItem("Result Grids"); resultsGrid.setLayout(new RowLayout()); resultsGrid.setScrollMode(Scroll.AUTO); resultsGrid.add(ResultsData.getResultsGrid()); resultsGrid.add(InputData.getInputGrid()); results.add(resultsGrid); right.add(results); rcp.add(right); RootPanel rp = RootPanel.get(); rp.add(new Html("Help Desk | Users Guide")); rp.add(rcp); } }