Skip to content

Commit

Permalink
Release 0.5.3.1 - Hotfix for multiple plugins (Activiti,Camunda) on s…
Browse files Browse the repository at this point in the history
…ame host
  • Loading branch information
valb3r committed Jul 17, 2023
1 parent 94a03ba commit 0172499
Show file tree
Hide file tree
Showing 14 changed files with 87 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,22 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.wm.ToolWindow
import com.intellij.openapi.wm.ToolWindowFactory
import com.valb3r.bpmn.intellij.activiti.plugin.advertisement.ActivitiAdvertisementState
import com.valb3r.bpmn.intellij.activiti.plugin.notifications.showNotificationBalloon
import com.valb3r.bpmn.intellij.activiti.plugin.popupmenu.ActivitiCanvasPopupMenuProvider
import com.valb3r.bpmn.intellij.activiti.plugin.settings.ActivitiBpmnPluginSettingsState
import com.valb3r.bpmn.intellij.activiti.plugin.xmlnav.ActivitiXmlNavigator
import com.valb3r.bpmn.intellij.plugin.activiti.parser.Activiti7ObjectFactory
import com.valb3r.bpmn.intellij.plugin.activiti.parser.Activiti7Parser
import com.valb3r.bpmn.intellij.plugin.activiti.parser.ActivitiObjectFactory
import com.valb3r.bpmn.intellij.plugin.activiti.parser.ActivitiParser
import com.valb3r.bpmn.intellij.plugin.commons.langinjection.registerCurrentFile
import com.valb3r.bpmn.intellij.plugin.core.BpmnPluginToolWindow
import com.valb3r.bpmn.intellij.plugin.core.advertisement.currentAdvertisementStateProvider
import com.valb3r.bpmn.intellij.plugin.core.getContentFactory
import com.valb3r.bpmn.intellij.plugin.core.newelements.registerNewElementsFactory
import com.valb3r.bpmn.intellij.plugin.core.parser.registerParser
import com.valb3r.bpmn.intellij.plugin.core.settings.currentSettingsStateProvider
import com.valb3r.bpmn.intellij.plugin.core.ui.components.popupmenu.registerPopupMenuProvider
import com.valb3r.bpmn.intellij.plugin.core.xmlnav.registerXmlNavigator
import java.nio.charset.StandardCharsets
Expand All @@ -29,6 +33,8 @@ class ActivitiBpmnPluginToolWindowFactory: ToolWindowFactory {

override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
log.info("Creating tool window content")
currentSettingsStateProvider.set { ServiceManager.getService(ActivitiBpmnPluginSettingsState::class.java) }
currentAdvertisementStateProvider.set { ServiceManager.getService(ActivitiAdvertisementState::class.java) }

val bpmnWindow = BpmnPluginToolWindow(
project,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package com.valb3r.bpmn.intellij.activiti.plugin
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.StartupActivity
import com.valb3r.bpmn.intellij.activiti.plugin.advertisement.ActivitiAdvertisementState
import com.valb3r.bpmn.intellij.activiti.plugin.settings.ActivitiBpmnPluginSettingsState
import com.valb3r.bpmn.intellij.plugin.core.advertisement.currentAdvertisementStateProvider
import com.valb3r.bpmn.intellij.plugin.core.settings.currentSettingsStateProvider
import java.util.concurrent.atomic.AtomicBoolean

Expand All @@ -14,6 +16,7 @@ class ActivitiPluginPreloaded: StartupActivity.Background {
override fun runActivity(project: Project) {
if (isLoaded.compareAndSet(false, true)) {
currentSettingsStateProvider.set { ServiceManager.getService(ActivitiBpmnPluginSettingsState::class.java) }
currentAdvertisementStateProvider.set { ServiceManager.getService(ActivitiAdvertisementState::class.java) }
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.valb3r.bpmn.intellij.activiti.plugin.advertisement

import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage
import com.valb3r.bpmn.intellij.plugin.core.advertisement.BaseAdvertisementState

@State(name = "ActivitiIntellijPluginAdvertisementState", storages = [(Storage("valb3r-activiti-opensource-polybpmn-advertisement.xml"))], defaultStateAsResource = true)
class ActivitiAdvertisementState: BaseAdvertisementState()
10 changes: 8 additions & 2 deletions activiti-intellij-plugin/src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<name>Activiti BPMN visualizer</name>

<!-- Plugin version -->
<version>0.5.3</version>
<version>0.5.3.1</version>

<!-- Unique identifier of the plugin. Cannot be changed between the plugin versions.
If not specified, assumed to be equal to <name>. -->
Expand Down Expand Up @@ -39,6 +39,12 @@
<!-- Description of changes in the latest version of the plugin. Displayed in the "Plugins" settings dialog and
in the plugin repository Web interface. -->
<change-notes><![CDATA[
<p>0.5.3.1:</p>
<ul>
<li>
Fixed blocker issue when users have multiple (i.e. Flowable,Camunda) plugins installed
</li>
</ul>
<p>0.5.3:</p>
<ul>
<li>
Expand Down Expand Up @@ -312,7 +318,7 @@
<!-- Notification balloons TODO: Not clear if it may cause any issues with 2018-2020.2 as extension is supported with 2020.3+ -->
<extensions defaultExtensionNs="com.intellij">
<notificationGroup id="Activiti BPMN Editor Notification group" displayType="BALLOON" key="com.valb3r.bpmn.intellij.activiti.plugin"/>
<applicationService serviceImplementation="com.valb3r.bpmn.intellij.plugin.core.advertisement.AdvertisementState"/>
<applicationService serviceImplementation="com.valb3r.bpmn.intellij.activiti.plugin.advertisement.ActivitiAdvertisementState"/>
</extensions>

<extensions defaultExtensionNs="com.intellij">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.valb3r.bpmn.intellij.plugin.core.advertisement

import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.PersistentStateComponent
import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage
import com.valb3r.bpmn.intellij.plugin.core.settings.currentSettingsStateProvider
import java.time.LocalDate
import java.util.concurrent.atomic.AtomicReference

@State(name = "AdvertisementState", storages = [(Storage("opensource-polybpmn-advertisement.xml"))], defaultStateAsResource = true)
class AdvertisementState: PersistentStateComponent<AdvertisementState.State> {
val currentAdvertisementStateProvider = AtomicReference<() -> BaseAdvertisementState>() // Not map as is global

// Due to class name collision each plugin implementation should reference its own class
open class BaseAdvertisementState: PersistentStateComponent<BaseAdvertisementState.State> {
class State {
var advertisementCommonShownAtDay: Long = LocalDate.MIN.toEpochDay()
var advertisementSwimpoolShownAtDay: Long = LocalDate.MIN.toEpochDay()
Expand All @@ -29,8 +30,12 @@ class AdvertisementState: PersistentStateComponent<AdvertisementState.State> {
override fun loadState(state: State) {
myState = state
}
}

companion object {
fun getInstance() = ApplicationManager.getApplication().getService(AdvertisementState::class.java)
}
fun currentAdvertisementState(): BaseAdvertisementState {
// This is required to access state this way, because ServiceManagerImpl.getComponentInstance -> ComponentStoreImpl.initComponent are
// responsible for loading from XML
// TODO this null-replacing dummy is is a hack for 'Searchable options index builder failed' java.lang.NullPointerException of build
val current = currentAdvertisementStateProvider.get() ?: return object : BaseAdvertisementState() {}
return current()
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,23 @@ import com.valb3r.bpmn.intellij.plugin.core.ui.components.notifications.genericS
import java.time.LocalDate

fun showTryPolyBpmnAdvertisementNotification(project: Project) {
val checkDate = AdvertisementState.getInstance().lastDisplayDateGlobal
val checkDate = currentAdvertisementState().lastDisplayDateGlobal
val now = LocalDate.now()
val showOnceInDays = 30L
if (shouldShow(checkDate, showOnceInDays, now)) {
AdvertisementState.getInstance().lastDisplayDateGlobal = now
currentAdvertisementState().lastDisplayDateGlobal = now
genericShowNotificationBalloon(project, "Advertisement", "Try <a href='https://plugins.jetbrains.com/plugin/21361-polybpmn-visualizer'>PolyBPMN plugin</a>. <br> PolyBPMN's has upgraded split editor for each file, diagram history and a wider selection of elements and properties.", NotificationType.INFORMATION, "Do not show again") {
doNotShowAgain(showOnceInDays) // set maximum date
}
}
}

fun showTryPolyBpmnAdvertisementSwimpoolNotification(project: Project) {
val checkDate = AdvertisementState.getInstance().lastDisplayDateSwimpoolAd
val checkDate =currentAdvertisementState().lastDisplayDateSwimpoolAd
val now = LocalDate.now()
val showOnceInDays = 30L
if (shouldShow(checkDate, showOnceInDays, now)) {
AdvertisementState.getInstance().lastDisplayDateSwimpoolAd = now
currentAdvertisementState().lastDisplayDateSwimpoolAd = now
genericShowNotificationBalloon(project, "Advertisement Swimming pool", "Unlock the full potential of diagram reading and editing with the <a href='https://plugins.jetbrains.com/plugin/21361-polybpmn-visualizer'>PolyBPMN plugin</a>. Seamlessly visualize and interpret swimming pools and swimming lanes with ease. Download from <a href='https://plugins.jetbrains.com/plugin/21361-polybpmn-visualizer'>here</a>", NotificationType.INFORMATION, "Do not show again") {
doNotShowAgain(showOnceInDays) // set maximum date
}
Expand All @@ -37,5 +37,5 @@ private fun shouldShow(checkDate: LocalDate, showOnceInDays: Long, now: LocalDat


private fun doNotShowAgain(showOnceInDays: Long) {
AdvertisementState.getInstance().lastDisplayDateGlobal = LocalDate.MAX.minusDays(showOnceInDays).minusDays(1)
currentAdvertisementState().lastDisplayDateGlobal = LocalDate.MAX.minusDays(showOnceInDays).minusDays(1)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.project.Project
import com.intellij.openapi.wm.ToolWindow
import com.intellij.openapi.wm.ToolWindowFactory
import com.valb3r.bpmn.intellij.plugin.camunda.advertisement.CamundaAdvertisementState
import com.valb3r.bpmn.intellij.plugin.camunda.notifications.showNotificationBalloon
import com.valb3r.bpmn.intellij.plugin.camunda.parser.CamundaObjectFactory
import com.valb3r.bpmn.intellij.plugin.camunda.parser.CamundaParser
Expand All @@ -14,6 +15,7 @@ import com.valb3r.bpmn.intellij.plugin.camunda.ui.components.popupmenu.CamundaCa
import com.valb3r.bpmn.intellij.plugin.camunda.xmlnav.CamundaXmlNavigator
import com.valb3r.bpmn.intellij.plugin.commons.langinjection.registerCurrentFile
import com.valb3r.bpmn.intellij.plugin.core.BpmnPluginToolWindow
import com.valb3r.bpmn.intellij.plugin.core.advertisement.currentAdvertisementStateProvider
import com.valb3r.bpmn.intellij.plugin.core.getContentFactory
import com.valb3r.bpmn.intellij.plugin.core.newelements.registerNewElementsFactory
import com.valb3r.bpmn.intellij.plugin.core.parser.registerParser
Expand All @@ -28,6 +30,7 @@ class CamundaBpmnPluginToolWindowFactory: ToolWindowFactory {
override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
log.info("Creating tool window content")
currentSettingsStateProvider.set { ServiceManager.getService(CamundaBpmnPluginSettingsState::class.java) }
currentAdvertisementStateProvider.set { ServiceManager.getService(CamundaAdvertisementState::class.java) }

val bpmnWindow = BpmnPluginToolWindow(
project,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package com.valb3r.bpmn.intellij.plugin.camunda
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.StartupActivity
import com.valb3r.bpmn.intellij.plugin.camunda.advertisement.CamundaAdvertisementState
import com.valb3r.bpmn.intellij.plugin.camunda.settings.CamundaBpmnPluginSettingsState
import com.valb3r.bpmn.intellij.plugin.core.advertisement.currentAdvertisementStateProvider
import com.valb3r.bpmn.intellij.plugin.core.settings.currentSettingsStateProvider
import java.util.concurrent.atomic.AtomicBoolean

Expand All @@ -14,6 +16,7 @@ class CamundaPluginPreloaded: StartupActivity.Background {
override fun runActivity(project: Project) {
if (isLoaded.compareAndSet(false, true)) {
currentSettingsStateProvider.set { ServiceManager.getService(CamundaBpmnPluginSettingsState::class.java) }
currentAdvertisementStateProvider.set { ServiceManager.getService(CamundaAdvertisementState::class.java) }
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.valb3r.bpmn.intellij.plugin.camunda.advertisement

import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage
import com.valb3r.bpmn.intellij.plugin.core.advertisement.BaseAdvertisementState

@State(name = "CamundaIntellijPluginAdvertisementState", storages = [(Storage("valb3r-camunda-opensource-polybpmn-advertisement.xml"))], defaultStateAsResource = true)
class CamundaAdvertisementState: BaseAdvertisementState()
10 changes: 8 additions & 2 deletions camunda-intellij-plugin/src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<name>Camunda BPMN visualizer</name>

<!-- Plugin version -->
<version>0.5.3</version>
<version>0.5.3.1</version>

<!-- Unique identifier of the plugin. Cannot be changed between the plugin versions.
If not specified, assumed to be equal to <name>. -->
Expand Down Expand Up @@ -39,6 +39,12 @@
<!-- Description of changes in the latest version of the plugin. Displayed in the "Plugins" settings dialog and
in the plugin repository Web interface. -->
<change-notes><![CDATA[
<p>0.5.3.1:</p>
<ul>
<li>
Fixed blocker issue when users have multiple (i.e. Flowable,Camunda) plugins installed
</li>
</ul>
<p>0.5.3:</p>
<ul>
<li>
Expand Down Expand Up @@ -312,7 +318,7 @@
<!-- Notification balloons TODO: Not clear if it may cause any issues with 2018-2020.2 as extension is supported with 2020.3+ -->
<extensions defaultExtensionNs="com.intellij">
<notificationGroup id="Camunda BPMN Editor Notification group" displayType="BALLOON" key="com.valb3r.bpmn.intellij.camunda.plugin"/>
<applicationService serviceImplementation="com.valb3r.bpmn.intellij.plugin.core.advertisement.AdvertisementState" />
<applicationService serviceImplementation="com.valb3r.bpmn.intellij.plugin.camunda.advertisement.CamundaAdvertisementState" />
</extensions>

<extensions defaultExtensionNs="com.intellij">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@ import com.intellij.openapi.wm.ToolWindowFactory
import com.valb3r.bpmn.intellij.activiti.plugin.notifications.showNotificationBalloon
import com.valb3r.bpmn.intellij.plugin.commons.langinjection.registerCurrentFile
import com.valb3r.bpmn.intellij.plugin.core.BpmnPluginToolWindow
import com.valb3r.bpmn.intellij.plugin.core.advertisement.currentAdvertisementStateProvider
import com.valb3r.bpmn.intellij.plugin.core.getContentFactory
import com.valb3r.bpmn.intellij.plugin.core.newelements.registerNewElementsFactory
import com.valb3r.bpmn.intellij.plugin.core.parser.registerParser
import com.valb3r.bpmn.intellij.plugin.core.settings.currentSettingsStateProvider
import com.valb3r.bpmn.intellij.plugin.core.ui.components.popupmenu.registerPopupMenuProvider
import com.valb3r.bpmn.intellij.plugin.core.xmlnav.registerXmlNavigator
import com.valb3r.bpmn.intellij.plugin.flowable.advertisement.FlowableAdvertisementState
import com.valb3r.bpmn.intellij.plugin.flowable.parser.FlowableObjectFactory
import com.valb3r.bpmn.intellij.plugin.flowable.parser.FlowableParser
import com.valb3r.bpmn.intellij.plugin.flowable.settings.FlowableBpmnPluginSettingsState
Expand All @@ -28,6 +30,7 @@ class FlowableBpmnPluginToolWindowFactory: ToolWindowFactory {
override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
log.info("Creating tool window content")
currentSettingsStateProvider.set { ServiceManager.getService(FlowableBpmnPluginSettingsState::class.java) }
currentAdvertisementStateProvider.set { ServiceManager.getService(FlowableAdvertisementState::class.java) }

val bpmnWindow = BpmnPluginToolWindow(
project,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package com.valb3r.bpmn.intellij.plugin.flowable
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.StartupActivity
import com.valb3r.bpmn.intellij.plugin.core.advertisement.currentAdvertisementStateProvider
import com.valb3r.bpmn.intellij.plugin.core.settings.currentSettingsStateProvider
import com.valb3r.bpmn.intellij.plugin.flowable.advertisement.FlowableAdvertisementState
import com.valb3r.bpmn.intellij.plugin.flowable.settings.FlowableBpmnPluginSettingsState
import java.util.concurrent.atomic.AtomicBoolean

Expand All @@ -14,6 +16,7 @@ class FlowablePluginPreloaded: StartupActivity.Background {
override fun runActivity(project: Project) {
if (isLoaded.compareAndSet(false, true)) {
currentSettingsStateProvider.set { ServiceManager.getService(FlowableBpmnPluginSettingsState::class.java) }
currentAdvertisementStateProvider.set { ServiceManager.getService(FlowableAdvertisementState::class.java) }
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.valb3r.bpmn.intellij.plugin.flowable.advertisement

import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage
import com.valb3r.bpmn.intellij.plugin.core.advertisement.BaseAdvertisementState

@State(name = "FlowableIntellijPluginAdvertisementState", storages = [(Storage("valb3r-flowable-opensource-polybpmn-advertisement.xml"))], defaultStateAsResource = true)
class FlowableAdvertisementState: BaseAdvertisementState()
10 changes: 8 additions & 2 deletions flowable-intellij-plugin/src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<name>Flowable BPMN visualizer</name>

<!-- Plugin version -->
<version>0.5.3</version>
<version>0.5.3.1</version>

<!-- Unique identifier of the plugin. Cannot be changed between the plugin versions.
If not specified, assumed to be equal to <name>. -->
Expand Down Expand Up @@ -39,6 +39,12 @@
<!-- Description of changes in the latest version of the plugin. Displayed in the "Plugins" settings dialog and
in the plugin repository Web interface. -->
<change-notes><![CDATA[
<p>0.5.3.1:</p>
<ul>
<li>
Fixed blocker issue when users have multiple (i.e. Flowable,Camunda) plugins installed
</li>
</ul>
<p>0.5.3:</p>
<ul>
<li>
Expand Down Expand Up @@ -312,7 +318,7 @@
<!-- Notification balloons TODO: Not clear if it may cause any issues with 2018-2020.2 as extension is supported with 2020.3+ -->
<extensions defaultExtensionNs="com.intellij">
<notificationGroup id="Flowable BPMN Editor Notification group" displayType="BALLOON" key="com.valb3r.bpmn.intellij.flowable.plugin"/>
<applicationService serviceImplementation="com.valb3r.bpmn.intellij.plugin.core.advertisement.AdvertisementState"/>
<applicationService serviceImplementation="com.valb3r.bpmn.intellij.plugin.flowable.advertisement.FlowableAdvertisementState"/>
</extensions>

<extensions defaultExtensionNs="com.intellij">
Expand Down

0 comments on commit 0172499

Please sign in to comment.