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