% \documentclass[11pt,a4paper,twoside]{article}
%   \usepackage[T1]{fontenc}
%   \usepackage[applemac]{inputenc}
%   % \usepackage[latin1]{inputenc}
%   \usepackage{pst-uml}
% \begin{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% définition des objets
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\StateGlobal}{%
  \umlState{état global de l'objet \texttt{Graphe}}{\umlEmptyBox{13cm}{16cm}}%
}
\newcommand{\StateNRSA}{%
  \umlState{non routé \\ sans arêtes}{\space}%
}
\newcommand{\StateNRI}{%
  \umlState{non routé \\ incomplet}{\space}%
}
\newcommand{\StateNRC}{%
  \umlState{non routé \\ complet}{\space}%
}
\newcommand{\StateROU}{%
  \umlState{routé \\ \mbox{}}{\space}%
}
\newcommand{\StateVisu}{%
  \umlState{Visualisable \\ \mbox{}}{do/superviser()}%
}
\newcommand{\StateAnu}{%
  \umlState{GrapheAnnulable}{%
    \hspace*{2.25cm}
    \rmfamily% car normalement un corps d'état est en ttfamily
    \begin{psmatrix}[colsep=1,rowsep=1.5,mnode=r]
                                       \\[-1.4cm]
       [name=StateInAnu] \umlStateIn   \\[-0.5cm]
       [name=StateNRSA]   \StateNRSA     \\[0cm]
       [name=StateNRI]  \StateNRI    \\[1cm]
       [name=StateNRC]   \StateNRC     \\[0.5cm]
       [name=StateROU]   \StateROU   
          &   \umlPutStateOut{0,0}{StateOutAnu}  \\[-1.5cm]
          {} % boite vide NECESSAIRE sur la dernière ligne si vide !
    \end{psmatrix}%
    \hspace*{1.5cm}
    %
    % Connection propre à chaque node
    % 
    {\ttfamily\small
      % 
      % \nput{75}{StateInAnu}{EntréeAnnulable}
      % \nput{-75}{StateOutAnu}{SortieAnnulable}
      % 
      \ncEXS[offsetA=0.25,offsetB=0.5]{StateNRSA}{StateNRSA}%
      \ncput*[npos=1.7]{ajouterSommet}
      \ncWXS[offsetA=-0.25,offsetB=-0.5]{StateNRSA}{StateNRSA}%
      \ncput*[npos=1.7]{retirerSommet}
      %
      \ncEXS[offsetA=0.25,offsetB=0.5]{StateNRI}{StateNRI}%
      \ncput*[npos=1.7]{ajouterArête}
      \ncWXS[offsetA=-0.25,offsetB=-0.5]{StateNRI}{StateNRI}%
      \ncput*[npos=1.7]{retirerArête}
      \ncEXN[offsetA=-0.0,offsetB=-0.5]{StateNRI}{StateNRI}%
      \ncput*[npos=1.7]{ajouterSommet}
      \ncWXN[offsetA=0.0,offsetB=0.5]{StateNRI}{StateNRI}%
      \ncput*[npos=1.7]{retirerSommet}
      %
      \ncEXS[offsetA=0.25,offsetB=0.5]{StateNRC}{StateNRC}%
      \ncput*[npos=1.7]{ajouterRoute}
      \ncWXS[offsetA=-0.25,offsetB=-0.5]{StateNRC}{StateNRC}%
      \ncput*[npos=1.7]{retirerRoute}
      % 
      \ncWXS[offsetA=-0.25,offsetB=-0.5]{StateROU}{StateROU}%
      \ncput*[npos=1.7]{réoptimiser}
      % 
      % Connections INTERNODE interne au macro-état
      %
      \ncline{->}{StateInAnu}{StateNRSA}%
         \naput[npos=0.3]{}%
      %
      \ncline{->}{StateNRSA}{StateNRI}%
         \naput[npos=0.3]{ajouterArête}%
      %
      \ncline{->}{StateNRI}{StateNRC}%
         % \naput[npos=0.3]{graphComplet}%
         \naput{graphComplet}%
      %
      \ncline{->}{StateNRC}{StateROU}%
         \ncput*[npos=0.3]{\umlStack{[ClientPrioritaireSatisfait] DemandeFin}}
      %
      \ncline{->}{StateROU}{StateOutAnu}%
      %
    }%
  }%
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Placement des objets
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{center}
  % \scalebox{0.5}{%}  Fonctionne egalement
  % \resizebox{0.9\linewidth}{!}{%}
  \resizebox{!}{13cm}{%
    \begin{pspicture}(-5,-9.5)(9.5,8)%\psgrid
      %
      \psset{%
         linearc=0.3,%
         % arm=1.2,%
         armA=1.2,%
         armB=0.8,%
         arrows=->,%
         arrowscale=2,%
         ncurv=2,% instead of 0.67
      }%
      \rput(2.4,-0.75){\rnode{StateGlobal}{\StateGlobal}}%
      %
      \umlPutStateIn{6,5}{StateIn}%
      %
      \rput(0,-1){\rnode{StateAnu}{\StateAnu}}%
      %
      \rput(6,-3){\rnode{StateVisu}{\StateVisu}}%
      %
      \rput(6,0){\rnode{StateOut}{\umlStateOut}}%
      %
      % LES CONNECTIONS INTERNODE
      %
      {\ttfamily\small
        %
        \ncEXN[offsetA=-0.25,offsetB=-0.5,armA=0.5]{StateVisu}{StateVisu}%
          \ncput*[npos=1.7]{zoomer}
        % 
        \ncSW[offsetB=-5]{->}{StateIn}{StateAnu}%
          \naput[npos=1.3]{NewGraphAsked}
        %
        \ncEN{->}{StateOutAnu}{StateVisu}%
          \nbput[npos=0.9]{/Sauvegarder}
        \ncline{->}{StateVisu}{StateOut}%
        %
        \ncES[offsetA=3]{->}{StateAnu}{StateOut}%
          % \naput[npos=0.6]{Annuler}
		  % on ajoute un espace en début de chaque ligne " Annuler"..
          \naput[npos=0.99]{\umlStack[umlAlign=l]%
                  {\ Annuler\\\ /DemanderConfirmation}}
      }
    \end{pspicture}%
  }%end resizeORscalebox
\end{center}


% \end{document}
