/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * 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 *******************************************************************************/ /** * */ package org.ebayopensource.turmeric.eclipse.services.search; import java.util.Collections; import java.util.List; import org.ebayopensource.turmeric.eclipse.core.logging.SOALogger; import org.ebayopensource.turmeric.eclipse.registry.ExtensionPointFactory; import org.ebayopensource.turmeric.eclipse.registry.models.SimpleAssetModel; import org.ebayopensource.turmeric.eclipse.repositorysystem.preferences.core.PreferenceReader; import org.ebayopensource.turmeric.eclipse.utils.ui.UIUtil; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.dialogs.DialogPage; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.search.ui.ISearchPage; import org.eclipse.search.ui.ISearchPageContainer; import org.eclipse.search.ui.NewSearchUI; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.events.SelectionAdapter; 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.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; /** * The Class SOASearchPage. * * @author yayu */ public class SOASearchPage extends DialogPage implements ISearchPage { private static final SOALogger logger = SOALogger.getLogger(); private ISearchPageContainer searchContainer; private CCombo assetTypeList; private Button localWorkspaceBtn; private Button buildSystemBtn; private Button repositoryBtn; private Text serviceNameText; private CCombo serviceLayerList; //private CCombo serviceDomainList; //private static final List<String> DOMAIN_LIST = new ArrayList<String>(); /** * Instantiates a new sOA search page. */ public SOASearchPage() { super(); } /** * Instantiates a new sOA search page. * * @param title the title */ public SOASearchPage(String title) { super(title); } /** * Instantiates a new sOA search page. * * @param title the title * @param image the image */ public SOASearchPage(String title, ImageDescriptor image) { super(title, image); } /** * {@inheritDoc} */ @Override public boolean performAction() { NewSearchUI.activateSearchResultView(); NewSearchUI.runQueryInBackground(new SOASearchQuery( buildSystemBtn.getSelection(), serviceNameText.getText(), serviceLayerList.getText(), "")); return true; } /** * {@inheritDoc} */ @Override public void setContainer(ISearchPageContainer container) { this.searchContainer = container; } /** * {@inheritDoc} */ @Override public void createControl(Composite parent) { final Composite composite = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(); gridLayout.marginTop = 20; gridLayout.marginLeft = 10; gridLayout.marginRight = 10; gridLayout.marginBottom = 30; gridLayout.horizontalSpacing = 10; composite.setLayout(gridLayout); composite.setLayoutData(new GridData(GridData.FILL_BOTH)); setControl(composite); createAssetTypeField(composite); createConditionArea(composite); createSearchCriteriaArea(composite); } private void createAssetTypeField(Composite parent) { final Composite composite = new Composite(parent, SWT.NONE); composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); composite.setLayout(new GridLayout(3, false)); final Label label = new Label(composite, SWT.LEFT); label.setText("Asset &Type:"); assetTypeList = new CCombo(composite, SWT.BORDER | SWT.READ_ONLY); assetTypeList.setItems(new String[]{SimpleAssetModel.ASSET_TYPE_SERVICE}); UIUtil.decorateControl(null, assetTypeList, "the type of the asset"); assetTypeList.select(0); GridData data = new GridData(); data.widthHint = 200; assetTypeList.setLayoutData(data); assetTypeList.setBackground(UIUtil.display() .getSystemColor(SWT.COLOR_LIST_BACKGROUND)); } private void createConditionArea(Composite parent) { final Group group = new Group(parent, SWT.SHADOW_ETCHED_IN); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); group.setLayout(new GridLayout(3, true)); group.setText("Scope"); GridData data = new GridData(GridData.FILL_HORIZONTAL); localWorkspaceBtn = new Button(group, SWT.RADIO); localWorkspaceBtn.setText("Local Workspace"); localWorkspaceBtn.setLayoutData(data); localWorkspaceBtn.setSelection(true); buildSystemBtn = new Button(group, SWT.RADIO); buildSystemBtn.setText("Build System"); buildSystemBtn.setLayoutData(data); repositoryBtn = new Button(group, SWT.RADIO); repositoryBtn.setText("Repository"); repositoryBtn.setLayoutData(data); try { repositoryBtn.setEnabled(ExtensionPointFactory.getSOARegistryProvider() != null); } catch (CoreException e) { repositoryBtn.setEnabled(false); logger.warning(e); } final SelectionListener listener = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { final boolean repoSelected = repositoryBtn.getSelection(); if (e.getSource() == repositoryBtn && repoSelected == true) { MessageDialog.openInformation(UIUtil.getActiveShell(), "SOA Search", "Please use the Repository Search tab for searching SOA services in the repository."); repositoryBtn.setSelection(false); } SOASearchPage.this.searchContainer.setPerformActionEnabled( repoSelected == false); } }; localWorkspaceBtn.addSelectionListener(listener); buildSystemBtn.addSelectionListener(listener); repositoryBtn.addSelectionListener(listener); } private void createSearchCriteriaArea(Composite parent) { final Group group = new Group(parent, SWT.SHADOW_ETCHED_IN); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); group.setLayout(new GridLayout(2, false)); group.setText("Search Criteria"); GridData data = new GridData(GridData.FILL_HORIZONTAL); Label label = new Label(group, SWT.NONE); label.setText("Service &Name:"); serviceNameText = new Text(group, SWT.BORDER); serviceNameText.setLayoutData(data); UIUtil.decorateControl(null, serviceNameText, "the name of the service for searching"); label = new Label(group, SWT.NONE); label.setText("Service &Layer:"); serviceLayerList = new CCombo(group, SWT.BORDER | SWT.READ_ONLY); serviceLayerList.setBackground(UIUtil.display() .getSystemColor(SWT.COLOR_LIST_BACKGROUND)); serviceLayerList.setLayoutData(data); UIUtil.decorateControl(null, serviceLayerList, "the service layer of the service for searching"); final List<String> layers = PreferenceReader.getServiceLayer(); Collections.reverse(layers); serviceLayerList.setItems( layers.toArray(new String[0])); } }