System.err.println("ICI : Presnetation step");
System.err.println("ICI : Presentation step");
	public void update (Observable obs, Object obj)	{		// s'il y a eu un changement d'etat dans ActivityScheduler		// (changement d'etat qd une activite est lanc?)		if (obs instanceof ActivityScheduler)		{			ActionManager.getInstance()					.getAction(Constants.ACTION_RUN_ACTIVITY).setEnabled(false);			System.err.println("notification actictivity sched");			// on recupere l'etat de l'application			AbstractActivityState state = (AbstractActivityState) obj;			// dans n'importe quel etat on peut toujours faire terminate et			// gotostep			ActionManager.getInstance().getAction(Constants.ACTION_TERMINATE)					.setEnabled(true);			ActionManager.getInstance().getAction(Constants.ACTION_GOTOSTEP)					.setEnabled(true);			if (state instanceof PreConditionCheckerState)			{				// on rafraichit la MainFrame				this.resetSplitPane();				this.showCheckList(state.getActivity());				// on active et desactive les actions				ActionManager.getInstance()						.getAction(Constants.ACTION_PREVIOUS).setEnabled(false);				ActionManager.getInstance().getAction(Constants.ACTION_NEXT)						.setEnabled(true);			}			else if (state instanceof ActivityPresentationState)			{				// on rafraichit la MainFrame				this.resetSplitPane();				System.err.println("ICI : Presnetation step");				this.presentActivity(state.getActivity());				// s'il y a des produits en entrees on active previous				if (state.getActivity().hasInputProducts())				{					ActionManager.getInstance().getAction(							Constants.ACTION_PREVIOUS).setEnabled(true);				}				else					ActionManager.getInstance().getAction(							Constants.ACTION_PREVIOUS).setEnabled(false);				// s'il y a des etapes ou des produits en sorties on active le				// next				if (state.getActivity().hasSteps()						|| state.getActivity().hasOutputProducts())				{					ActionManager.getInstance()							.getAction(Constants.ACTION_NEXT).setEnabled(true);				}				else					ActionManager.getInstance()							.getAction(Constants.ACTION_NEXT).setEnabled(false);			}			else if (state instanceof StepState)			{				System.err.println("ICI : " + state);				// on rafraichit la MainFrame				this.resetSplitPane();				this.presentStep(state.getStep(), state.getIndex() + 1, state						.getStepList().size());				// on peut toujours faire previous car au minimum on reviendra				// en ActivityPresentation				ActionManager.getInstance()						.getAction(Constants.ACTION_PREVIOUS).setEnabled(true);				// si on est sur la derniere etape et qu'il n'y a pas des				// produits en sortie				// on ne peut pas faire next				if (state.getIndex() == state.getStepList().size() - 1						&& !state.getActivity().hasOutputProducts())				{					ActionManager.getInstance()							.getAction(Constants.ACTION_NEXT).setEnabled(false);				}				else					ActionManager.getInstance()							.getAction(Constants.ACTION_NEXT).setEnabled(true);			}			else if (state instanceof PostConditionCheckerState)			{				// on rafraichit la MainFrame				this.resetSplitPane();				this.showEndCheckList(state.getActivity());				// on peut toujours faire previous car au minimum on reviendra				// en ActivityPresentation				ActionManager.getInstance()						.getAction(Constants.ACTION_PREVIOUS).setEnabled(true);				// on ne peut jamais faire next quand on est en				// PostConditionCheckerState				ActionManager.getInstance().getAction(Constants.ACTION_NEXT)						.setEnabled(false);			}			else			{				System.err						.println("ActivityScheduler est dans un etat inconnu !!!");			}			// on position la combo sur le bon item			// on initialise la comboBox du ButtonPanel			this.buttonPanel.setSelectedIndex(state);			return;		}		// s'il y a eu un changement d'etat dans l'ApplicationManager		if (obs instanceof ApplicationManager)		{			// s'il l'objet passe est de type ActivityScheduler			// la MainFrame s'enregistre comme observer aupres de			// l'ActivityScheduler			if (obj instanceof ActivityScheduler)			{				ActivityScheduler activityScheduler = (ActivityScheduler) obj;				activityScheduler.addObserver(this);				// a l'entr?e dans un activit? on cr?e un nouveau panel de				// boutton que l'on pourra ajouter				// ensuite en bas				// on peut faire cela car obj est de type ActivityScheduler				// lorsque l'on vient de lancer une activit?				this.buttonPanel = new ButtonPanel();				// on initialise la combo box				this.buttonPanel.initComboBox(activityScheduler.getStateList());			}			else if (obj instanceof InitState)			{				// on desactive les actions				ActionManager.getInstance().getAction(						Constants.ACTION_RUN_ACTIVITY).setEnabled(false);				ActionManager.getInstance().getAction(Constants.ACTION_NEXT)						.setEnabled(false);				ActionManager.getInstance()						.getAction(Constants.ACTION_PREVIOUS).setEnabled(false);				ActionManager.getInstance().getAction(						Constants.ACTION_TERMINATE).setEnabled(false);				ActionManager.getInstance()						.getAction(Constants.ACTION_GOTOSTEP).setEnabled(false);				ActionManager.getInstance().getAction(						Constants.ACTION_TOOLSSETTINGS).setEnabled(false);				ActionManager.getInstance().getAction(						Constants.ACTION_OPENPROCESS).setEnabled(false);				ActionManager.getInstance().getAction(						Constants.ACTION_CLOSEPROJECT).setEnabled(false);				// on affiche la fen?tre				this.setVisible(true);				this.setExtendedState(Frame.MAXIMIZED_BOTH);				// si aucun projet n'a ete creer on demande a l'utilisateur de				// le definir				// test si la valeur de la cl? workspace est d?finie ou pas				if (!PreferencesManager.getInstance().containWorkspace())				{					WorkspaceFileChooser workspaceChooser = new WorkspaceFileChooser();					if (workspaceChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)					{						File file = workspaceChooser.getSelectedFile();						System.out.println(file.getPath());						// mettre le path dans le fichier preferences a la cl?						// "workspace"						PreferencesManager.getInstance().setWorkspace(								file.getPath());					}				}				this.reinitialize();			}			else if (obj instanceof ProjectOpenedState)			{				// on desactive run activity				ActionManager.getInstance().getAction(						Constants.ACTION_RUN_ACTIVITY).setEnabled(false);				ActionManager.getInstance().getAction(						Constants.ACTION_TOOLSSETTINGS).setEnabled(false);				ActionManager.getInstance().getAction(						Constants.ACTION_OPENPROCESS).setEnabled(true);				ActionManager.getInstance().getAction(						Constants.ACTION_CLOSEPROJECT).setEnabled(true);			}			else if (obj instanceof ProcessOpenedState)			{				this.showProcess();				ActionManager.getInstance().getAction(						Constants.ACTION_RUN_ACTIVITY).setEnabled(false);				ActionManager.getInstance().getAction(						Constants.ACTION_TOOLSSETTINGS).setEnabled(true);				ActionManager.getInstance().getAction(Constants.ACTION_NEXT)						.setEnabled(false);				ActionManager.getInstance()						.getAction(Constants.ACTION_PREVIOUS).setEnabled(false);				ActionManager.getInstance()						.getAction(Constants.ACTION_GOTOSTEP).setEnabled(false);				ActionManager.getInstance().getAction(						Constants.ACTION_TERMINATE).setEnabled(false);			}			else if (obj instanceof ActivityLaunchedState)			{			}		}	}