% \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}