|
From: <li...@vu...> - 2017-09-19 12:47:29
|
Revision: 44246
Author: liviu
Date: 2017-09-19 12:47:21 +0000 (Tue, 19 Sep 2017)
Log Message:
-----------
Improved reliability and stability.
Modified Paths:
--------------
plugins/azpromo/com/vuze/azureus/plugin/azpromo/PromoPlugin.java
plugins/azpromo/com/vuze/azureus/plugin/azpromo/PromoView.java
Modified: plugins/azpromo/com/vuze/azureus/plugin/azpromo/PromoPlugin.java
===================================================================
--- plugins/azpromo/com/vuze/azureus/plugin/azpromo/PromoPlugin.java 2017-09-01 16:00:45 UTC (rev 44245)
+++ plugins/azpromo/com/vuze/azureus/plugin/azpromo/PromoPlugin.java 2017-09-19 12:47:21 UTC (rev 44246)
@@ -59,17 +59,16 @@
/**
* @created Sep 29, 2014
*/
-public class PromoPlugin
- implements UnloadablePlugin
+public class PromoPlugin implements UnloadablePlugin
{
- private static final String VIEWID = "SidebarPromo";
+ protected static final String VIEWID = "SidebarPromo";
private static PromoPlugin pluginInstance;
private Object viewLock = new Object();
private UISWTInstance swtInstance;
- private boolean viewAdded;
+ private boolean didAddViewInSidebar;
private List<PromoView> views = new ArrayList<PromoView>();
@@ -169,45 +168,7 @@
configModel = uiManager.createBasicPluginConfigModel("ConfigView.Section."
+ VIEWID);
- BooleanParameter paramEnabled = configModel.addBooleanParameter2("enabled",
- VIEWID + ".enabled", true);
- paramEnabled.addConfigParameterListener(new ConfigParameterListener() {
- public void configParameterChanged(ConfigParameter param) {
- UIInstance[] uiInstances = pluginInterface.getUIManager().getUIInstances();
- for (UIInstance uiInstance : uiInstances) {
- if (uiInstance instanceof UISWTInstance) {
- swtInstance = (UISWTInstance) uiInstance;
- break;
- }
- }
- if (swtInstance != null) {
- boolean enabled = pluginInterface.getPluginconfig().getPluginBooleanParameter(
- "enabled");
-
- synchronized( viewLock ){
-
- if ( enabled ){
-
- if ( !viewAdded ){
-
- swtInstance.addView(UISWTInstance.VIEW_SIDEBAR_AREA, VIEWID, PromoView.class, null);
-
- viewAdded = true;
- }
- }else{
- if ( viewAdded ){
-
- swtInstance.removeViews( UISWTInstance.VIEW_SIDEBAR_AREA, VIEWID );
-
- viewAdded = false;
-
- PromoPlugin.logEvent("goaway");
- }
- }
- }
- }
- }
- });
+// createEnableDisablePluginEntryInPreferencesMenu(uiManager);
// Get notified when the UI is attached
pluginInterface.getUIManager().addUIListener(new UIManagerListener() {
@@ -223,11 +184,11 @@
synchronized( viewLock ){
- if ( !viewAdded ){
+ if ( !didAddViewInSidebar){
swtInstance.addView(UISWTInstance.VIEW_SIDEBAR_AREA, VIEWID, PromoView.class, null);
- viewAdded = true;
+ didAddViewInSidebar = true;
}
}
}
@@ -275,6 +236,49 @@
});
}
+ private void createEnableDisablePluginEntryInPreferencesMenu(UIManager uiManager) {
+
+ BooleanParameter paramEnabled = configModel.addBooleanParameter2("enabled",
+ VIEWID + ".enabled", true);
+ paramEnabled.addConfigParameterListener(new ConfigParameterListener() {
+ public void configParameterChanged(ConfigParameter param) {
+ UIInstance[] uiInstances = pluginInterface.getUIManager().getUIInstances();
+ for (UIInstance uiInstance : uiInstances) {
+ if (uiInstance instanceof UISWTInstance) {
+ swtInstance = (UISWTInstance) uiInstance;
+ break;
+ }
+ }
+ if (swtInstance != null) {
+ boolean enabled = pluginInterface.getPluginconfig().getPluginBooleanParameter(
+ "enabled");
+
+ synchronized( viewLock ){
+
+ if ( enabled ){
+
+ if ( !didAddViewInSidebar){
+
+ swtInstance.addView(UISWTInstance.VIEW_SIDEBAR_AREA, VIEWID, PromoView.class, null);
+
+ didAddViewInSidebar = true;
+ }
+ }else{
+ if (didAddViewInSidebar){
+
+ swtInstance.removeViews( UISWTInstance.VIEW_SIDEBAR_AREA, VIEWID );
+
+ didAddViewInSidebar = false;
+
+ PromoPlugin.logEvent("goaway");
+ }
+ }
+ }
+ }
+ }
+ });
+ }
+
protected void checkLicence() {
boolean hasLicence = FeatureUtils.hasPlusLicence() || FeatureUtils.hasNoAdLicence();
@@ -297,11 +301,11 @@
synchronized( viewLock ){
- if ( viewAdded ){
+ if (didAddViewInSidebar){
swtInstance.removeViews(UISWTInstance.VIEW_SIDEBAR_AREA, VIEWID);
- viewAdded = false;
+ didAddViewInSidebar = false;
}
}
@@ -508,17 +512,17 @@
}
protected void
- viewAdded(
+ addViewInViews(
PromoView view )
{
synchronized( views ){
-
+
views.add( view );
}
}
protected void
- viewRemoved(
+ removeViewInViews(
PromoView view )
{
synchronized( views ){
@@ -538,4 +542,8 @@
return( pluginInstance );
}
+ protected List<PromoView> getViews(){
+ return new ArrayList<>(views);
+ }
+
}
Modified: plugins/azpromo/com/vuze/azureus/plugin/azpromo/PromoView.java
===================================================================
--- plugins/azpromo/com/vuze/azureus/plugin/azpromo/PromoView.java 2017-09-01 16:00:45 UTC (rev 44245)
+++ plugins/azpromo/com/vuze/azureus/plugin/azpromo/PromoView.java 2017-09-19 12:47:21 UTC (rev 44246)
@@ -23,6 +23,7 @@
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.util.List;
import java.util.Map;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
@@ -87,7 +88,7 @@
public boolean eventOccurred(UISWTViewEvent event) {
switch (event.getType()) {
case UISWTViewEvent.TYPE_CREATE:
- plugin.viewAdded( this );
+ plugin.addViewInViews( this );
break;
case UISWTViewEvent.TYPE_INITIALIZE:
@@ -99,7 +100,7 @@
break;
case UISWTViewEvent.TYPE_DESTROY:
- plugin.viewRemoved( this );
+ plugin.removeViewInViews( this );
break;
case UISWTViewEvent.TYPE_DATASOURCE_CHANGED:
@@ -254,8 +255,8 @@
}
});
}
-
-
+
+
adBrowser = new Browser(ourParent, SWT.NO_SCROLL);
adBrowser.addOpenWindowListener(new OpenWindowListener() {
public void open(WindowEvent event) {
@@ -328,14 +329,14 @@
flipTest(0);
}
-
+
showEvery = mapJSON == null ? 1000 * 60 * 15
: MapUtils.getMapInt(mapJSON, "show-every-ms", 1000 * 60 * 5);
-
+
if (timeEvent_inHouse != null) {
timeEvent_inHouse.cancel();
}
-
+
timeEvent_inHouse = SimpleTimer.addEvent("pv", SystemTime.getOffsetTime(showEvery),
new TimerEventPerformer() {
@@ -378,21 +379,33 @@
return;
}
- if (adBrowser == null || adBrowser.isDisposed()) {
+ boolean popupOnShowEvery = MapUtils.getMapBoolean(mapJSON, "popup-on-show-every", false);
+ if (popupOnShowEvery) {
+ addViewIfNotPresent();
+ } else if (adBrowser == null || adBrowser.isDisposed()) {
return;
}
-
- setInHouse(true);
+ if (adBrowser != null && ! adBrowser.isDisposed()) {
+ setInHouse(true);
+ }
}
});
}
+ private void addViewIfNotPresent() {
+ List<PromoView> views = plugin.getViews();
+ boolean isPromoViewAlreadyShown = views.contains(this);
+ if (! isPromoViewAlreadyShown) {
+ plugin.getSWTInstance().addView(UISWTInstance.VIEW_SIDEBAR_AREA, PromoPlugin.VIEWID, PromoView.class, null);
+ plugin.addViewInViews(this);
+ }
+ }
+
protected void temporaryClose() {
if (view == null) {
return;
}
- view.closeView();
- PromoPlugin.logEvent("clickx");
+
UISWTInstance swtInstance = plugin.getSWTInstance();
if (swtInstance == null) {
return;
@@ -409,6 +422,13 @@
MultipleDocumentInterface mdi = UIFunctionsManager.getUIFunctions().getMDI();
mdi.showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_PLUS);
+ } else {
+ boolean canCloseOnX = MapUtils.getMapBoolean(mapJSON, "can-close-on-x", false);
+ if (canCloseOnX) {
+ PromoPlugin.logEvent("clickx");
+ swtInstance.removeViews( UISWTInstance.VIEW_SIDEBAR_AREA, PromoPlugin.VIEWID );
+ plugin.removeViewInViews(this);
+ }
}
}
@@ -428,7 +448,7 @@
showingInHouse = on;
}
adBrowser.setText("");
- String html = showingInHouse ? MapUtils.getMapString(mapJSON, "html", DEFAULT_INHOUSE_HTML) : DEFAULT_INHOUSE_HTML;
+ String html = showingInHouse ? MapUtils.getMapString(mapJSON, "html", DEFAULT_INHOUSE_HTML) : DEFAULT_INHOUSE_HTML;
adBrowser.setText(html);
}
|