Using Builder pattern for CoreModelParameters now
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / nature / MachineContext.java
index 3e5c9de..f3965f2 100644 (file)
@@ -40,10 +40,12 @@ public class MachineContext
        final ScopedPreferenceStore prefs;
        Optional<String> machineId = Optional.empty();
        Optional<MachineDefinition> machineDefinition = Optional.empty();
+       @Deprecated(forRemoval = true)
        Optional<Machine> activeMachine = Optional.empty();
 
        private MachineContextStatus status = UNKOWN;
 
+       @Deprecated(forRemoval = true)
        private final Set<ActiveMachineListener> machineListeners = new HashSet<>();
        private final Set<MachineContextStatusListener> stateListeners = new HashSet<>();
 
@@ -70,7 +72,7 @@ public class MachineContext
         */
        public final boolean isCurrentyValid()
        {
-               return status == READY || status == ACTIVE;
+               return status == READY || isActive();
        }
 
        /**
@@ -86,6 +88,7 @@ public class MachineContext
        /**
         * Returns true if a machine is instantiated and (possibly) running
         */
+       @Deprecated(forRemoval = true)
        public final boolean isActive()
        {
                return status == ACTIVE || status == ACTIVE_CHANGED;
@@ -120,11 +123,13 @@ public class MachineContext
        /**
         * Sets the active machine in the {@link MachineContext}'s project scope.
         */
+       @Deprecated(forRemoval = true)
        public final void setActiveMachine(Machine machine)
        {
+               Optional<Machine> oldMachine = activeMachine;
                activeMachine = Optional.ofNullable(machine);
                updateStatus();
-               notifyActiveMachineListeners();
+               notifyActiveMachineListeners(oldMachine, activeMachine);
        }
 
        public final Optional<String> getMachineId()
@@ -137,6 +142,7 @@ public class MachineContext
                return machineDefinition;
        }
 
+       @Deprecated(forRemoval = true)
        public final Optional<Machine> getActiveMachine()
        {
 //             activateMachine(); // TODO is this the best way to deal with this?
@@ -149,6 +155,7 @@ public class MachineContext
         * 
         * @return true if the activation was successful
         */
+       @Deprecated(forRemoval = true)
        public final boolean activateMachine()
        {
                if (status == ACTIVE)
@@ -187,6 +194,7 @@ public class MachineContext
         * 
         * @return the raw status of the project at the time of the call.
         */
+       @SuppressWarnings("removal")
        public final MachineContextStatus reevaluateStatus()
        {
                if (!owner.exists())
@@ -204,12 +212,14 @@ public class MachineContext
                return ACTIVE;
        }
 
+       @Deprecated(forRemoval = true)
        private void doPostStatusChangedAction()
        {
                if ((status == DEAD || status == CLOSED) && activeMachine.isPresent())
                {
+                       Optional<Machine> oldMachine = activeMachine;
                        activeMachine = Optional.empty();
-                       notifyActiveMachineListeners();
+                       notifyActiveMachineListeners(oldMachine, activeMachine);
                }
        }
 
@@ -235,6 +245,11 @@ public class MachineContext
                        return;
                machineId = newMachineDefinitionId;
                machineDefinition = machineId.map(MachineRegistry::getMachine);
+               if (machineDefinition.isEmpty() && newMachineDefinitionId.isPresent())
+               {
+                       // TODO open a dialog
+                       System.err.println("Machine definition for ID " + newMachineDefinitionId.get() + " not found");
+               }
                updateStatus();
                ProjectMachineContext.notifyListeners(new ProjectContextEvent(this, ProjectContextEventType.MACHINE_DEFINITION_CHANGE));
        }
@@ -247,17 +262,20 @@ public class MachineContext
                }
        }
 
-       private void notifyActiveMachineListeners()
+       @Deprecated(forRemoval = true)
+       private void notifyActiveMachineListeners(Optional<Machine> oldMachine, Optional<Machine> newMachine)
        {
-               machineListeners.forEach(ob -> ob.setMachine(activeMachine));
+               machineListeners.forEach(ob -> ob.setMachine(oldMachine, newMachine));
        }
 
+       @Deprecated(forRemoval = true)
        public void addActiveMachineListener(ActiveMachineListener ob)
        {
                machineListeners.add(ob);
-               ob.setMachine(activeMachine);
+               ob.setMachine(Optional.empty(), activeMachine);
        }
 
+       @Deprecated(forRemoval = true)
        public void removeActiveMachineListener(ActiveMachineListener ob)
        {
                machineListeners.remove(ob);
@@ -280,9 +298,10 @@ public class MachineContext
        }
 
        @FunctionalInterface
+       @Deprecated(forRemoval = true)
        public static interface ActiveMachineListener
        {
-               void setMachine(Optional<Machine> machine);
+               void setMachine(Optional<Machine> oldMachine, Optional<Machine> newMachine);
        }
 
        @FunctionalInterface