/* * Mylyn Connector for Serena Business Mashups * Copyright 2010 Brian Rosenberger (Brutex Network) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Serena, TeamTrack and Serena Business Mashup are * registered trademarks of SERENA Software Inc. */ package net.brutex.mylyn.sbmconnector.ui; import java.awt.Color; import java.util.ArrayList; import net.brutex.mylyn.sbmconnector.core.SBMRepositoryConnector; import net.brutex.mylyn.sbmconnector.core.model.SBMField; import net.brutex.mylyn.sbmconnector.core.model.SBMSystemFields; import net.brutex.sbm.wsclient.ReportInfo; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.mylyn.tasks.core.IRepositoryQuery; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositoryQueryPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Widget; import org.eclipse.ui.forms.widgets.ExpandableComposite; import org.eclipse.ui.forms.widgets.FormToolkit; public class SBMRepositoryQueryPage extends AbstractRepositoryQueryPage { private Text sql_where_clause = null; private Text query_title = null; private Combo reportcombo = null; private ReportInfo selectedReport = null; public static String SQL_QUERY = "sql_where"; public static String SQL_QUERY_NAME = "name"; public static String REPORT = "report"; public static String REPORT_OR_QUERY = "-- use query --"; public SBMRepositoryQueryPage(String pageName, TaskRepository repository, IRepositoryQuery query) { super(pageName, repository, query); setTitle("SBM Query"); setDescription("Please specify table database name."); } @Override public void applyTo(IRepositoryQuery query) { if (getQueryTitle() != null) { query.setSummary(getQueryTitle()); } query.setAttribute(SQL_QUERY, sql_where_clause.getText()); query.setAttribute(SQL_QUERY_NAME, query_title.getText()); query.setAttribute(REPORT, selectedReport.getReportUUID()); } @Override public String getQueryTitle() { if (query_title != null && !query_title.getText().isEmpty()) return query_title.getText(); return "new query"; } @Override public void createControl(Composite arg0) { Composite control = new Composite(arg0, SWT.BORDER); control.setLayout(new GridLayout(2, false)); Label report_label = new Label(control, SWT.NONE); reportcombo = new Combo(control, SWT.SINGLE | SWT.BORDER); new Label(control, SWT.NONE).setText(" OR "); new Label(control, SWT.SEPARATOR | SWT.HORIZONTAL); Label query_label = new Label(control, SWT.NONE); query_label.setText("Query Name:"); report_label.setText("Report"); String solutionname = getTaskRepository().getProperty( SBMRepositorySettingsPage.STRING_SOLUTIONTABLE); try { final java.util.List reportlist = SBMRepositoryConnector .getClient(getTaskRepository()).getReportList(solutionname); reportcombo.add(REPORT_OR_QUERY); reportcombo.select(0); for (ReportInfo report : reportlist) { reportcombo.add(report.getReportName()); } reportcombo.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event arg0) { if (reportcombo.getSelectionIndex() == 0) { query_title.setEditable(true); query_title.setEnabled(true); sql_where_clause.setEditable(true); sql_where_clause.setEnabled(true); query_title.setText(""); } else { query_title.setEditable(false); query_title.setEnabled(false); sql_where_clause.setEditable(false); sql_where_clause.setEnabled(false); query_title.setText(reportcombo.getText()); selectedReport = reportlist.get(reportcombo .getSelectionIndex() - 1); } } }); } catch (Exception e) { } /* * * * table.addListener(SWT.Selection, new Listener() { * * @Override public void handleEvent(Event arg0) { // when the table has * been changed // try to re-read the field list tableFieldList = ""; * tableFullFieldList = ""; try { SBMField[] fields = * SBMRepositoryConnector.getClient( * createTaskRepository()).getFields(table.getText()) .toArray(new * SBMField[0]); fillList(list, fields); } catch (Exception e) { } if * (getWizard() != null) { solutionTable = table.getText(); * getWizard().getContainer().updateButtons(); } } * * }); regenerateTables(); expander.setClient(control); */ query_title = new Text(control, SWT.BORDER); if (getQuery() != null) query_title.setText(getQuery().getAttribute("name")); GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.heightHint = 200; Label label_sql = new Label(control, SWT.NONE); label_sql.setText("SQL where:"); sql_where_clause = new Text(control, SWT.MULTI | SWT.WRAP | SWT.V_SCROLL | SWT.BORDER); GridData gd = new GridData(300, 150); gd.horizontalSpan = 2; sql_where_clause.setLayoutData(gd); if (getQuery() != null) sql_where_clause.setText(getQuery().getAttribute("sql_where")); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.TOP) .applyTo(query_title); Dialog.applyDialogFont(control); setControl(control); } }