/** * */ package com.aelitis.azureus.ui.swt.subscriptions; import java.util.Locale; import org.eclipse.swt.*; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; import org.gudy.azureus2.core3.internat.MessageText; import org.gudy.azureus2.core3.util.UrlUtils; import org.gudy.azureus2.plugins.PluginInterface; import org.gudy.azureus2.ui.swt.Messages; import org.gudy.azureus2.ui.swt.Utils; import org.gudy.azureus2.ui.swt.plugins.UISWTView; import org.gudy.azureus2.ui.swt.plugins.UISWTViewEvent; import org.gudy.azureus2.ui.swt.shells.MessageBoxShell; import org.gudy.azureus2.ui.webplugin.WebPlugin; import com.aelitis.azureus.core.AzureusCoreFactory; import com.aelitis.azureus.core.cnetwork.ContentNetwork; import com.aelitis.azureus.core.cnetwork.ContentNetworkManagerFactory; import com.aelitis.azureus.core.subs.Subscription; import com.aelitis.azureus.ui.swt.UIFunctionsManagerSWT; import com.aelitis.azureus.ui.swt.UIFunctionsSWT; import com.aelitis.azureus.util.ConstantsVuze; public class SubscriptionViewExternal implements SubscriptionsViewBase { private Subscription subs; private Composite parent_composite; private Composite composite; private SubscriptionMDIEntry mdiInfo; private UISWTView swtView; public SubscriptionViewExternal() { } public void updateBrowser( boolean is_auto ) { } public void refreshView() { } private void launchView() { PluginInterface xmweb_ui = AzureusCoreFactory.getSingleton().getPluginManager().getPluginInterfaceByID( "xmwebui" ); if (xmweb_ui == null || !xmweb_ui.getPluginState().isOperational()){ UIFunctionsSWT uiFunctions = UIFunctionsManagerSWT.getUIFunctionsSWT(); MessageBoxShell mb = new MessageBoxShell( SWT.ICON_ERROR | SWT.OK, MessageText.getString( "external.browser.failed" ), MessageText.getString( "xmwebui.required" )); mb.setParent(uiFunctions.getMainShell()); mb.open(null); }else{ WebPlugin wp = (WebPlugin)xmweb_ui.getPlugin(); String remui = wp.getProtocol().toLowerCase( Locale.US ) + "://127.0.0.1:" + wp.getPort() + "/"; String test_url = ConstantsVuze.getDefaultContentNetwork().getServiceURL( ContentNetwork.SERVICE_XSEARCH, new Object[]{ "", false }); int pos = test_url.indexOf( '?' ); String mode = xmweb_ui.getUtilities().getFeatureManager().isFeatureInstalled( "core" )?"plus":"trial"; String query = "Subscription: " + subs.getName() + " ("+subs.getID() + ")"; String search_url = test_url.substring( 0, pos+1 ) + "q=" + UrlUtils.encode( query ) + "&" + "mode=" + mode + "&" + "search_source=" + UrlUtils.encode( remui ); Utils.launch( search_url ); } } private void initialize( Composite _parent_composite ) { parent_composite = _parent_composite; composite = new Composite( parent_composite, SWT.NULL ); GridLayout layout = new GridLayout(3, false); layout.marginHeight = 32; layout.marginWidth = 32; composite.setLayout( layout ); Label label = new Label( composite, SWT.NULL ); GridData gd = new GridData( GridData.FILL_HORIZONTAL ); gd.horizontalSpan = 3; label.setLayoutData( gd ); Messages.setLanguageText( label, "subs.ext.view.info" ); label = new Label( composite, SWT.NULL ); Messages.setLanguageText( label, "subs.ext.view.launch.info" ); Button button = new Button( composite, SWT.PUSH ); Messages.setLanguageText( button, "iconBar.run" ); button.addSelectionListener( new SelectionAdapter() { public void widgetSelected( SelectionEvent e) { launchView(); } }); } private Composite getComposite() { return( composite ); } private String getFullTitle() { if ( subs == null ){ return ""; } return( subs.getName()); } private void viewActivated() { if ( subs != null && mdiInfo == null ){ mdiInfo = (SubscriptionMDIEntry)subs.getUserData(SubscriptionManagerUI.SUB_ENTRYINFO_KEY); } } private void viewDeactivated() { if ( mdiInfo != null && mdiInfo.spinnerImage != null ){ mdiInfo.spinnerImage.setVisible(false); } } private void dataSourceChanged( Object data ) { if ( data instanceof Subscription ){ subs = (Subscription) data; mdiInfo = (SubscriptionMDIEntry) subs.getUserData(SubscriptionManagerUI.SUB_ENTRYINFO_KEY); } if ( subs != null && swtView != null ){ swtView.setTitle(getFullTitle()); } } public boolean eventOccurred(UISWTViewEvent event) { switch (event.getType()) { case UISWTViewEvent.TYPE_CREATE: swtView = (UISWTView)event.getData(); swtView.setTitle(getFullTitle()); break; case UISWTViewEvent.TYPE_DESTROY: break; case UISWTViewEvent.TYPE_INITIALIZE: initialize((Composite)event.getData()); break; case UISWTViewEvent.TYPE_LANGUAGEUPDATE: Messages.updateLanguageForControl(getComposite()); swtView.setTitle(getFullTitle()); break; case UISWTViewEvent.TYPE_DATASOURCE_CHANGED: dataSourceChanged(event.getData()); break; case UISWTViewEvent.TYPE_FOCUSGAINED: viewActivated(); break; case UISWTViewEvent.TYPE_FOCUSLOST: viewDeactivated(); break; case UISWTViewEvent.TYPE_REFRESH: break; } return true; } }