\documentclass[a4paper]{article}
\usepackage[a4paper,scale=0.9]{geometry}
\usepackage{graphics,acro,ifthen,pstricks,pst-node,pst-tree,pst-eps}
\newpsobject{showgrid}{psgrid}{subgriddiv=1,griddots=10,gridlabels=6pt}

% Copyright (c) 2003 by Nick Urbanik <nicku(at)nicku.org>.
% This material may be distributed only subject to the terms and
% conditions set forth in the Open Publication License, v1.0 or later
% (the latest version is presently available at
% http://www.opencontent.org/openpub/).

% I should probably have used the psmatrix environment instead of
% using pstree, since this is really a graph rather than a tree.
% Anyway, it's okay, except that the positioning will break if
% things are resized individually.

% See page 49 of Graphics Companion
% #1, #2 x and y coordinates of reference point of brace in pt
% #3 rotation angle for large right brace in degrees: 90 faces down
%                              -90 faces up, 180 faces to the right
% #4 total height of brace in pt
\newcommand{\Bpara}[4]{%
  \begin{picture}(0,0)%
    \setlength{\unitlength}{1pt}%
    \put(#1,#2){\rotatebox{#3}{\raisebox{0mm}[0mm][0mm]{%
          \makebox[0mm]{$\left.\rule{0mm}{#4pt}\right\}$}}}}%
  \end{picture}%
}

\newlength{\NW}
\newlength{\mylevelsep}
\newlength{\mytextlen}
\setlength{\mylevelsep}{35mm}
\setlength{\NW}{0.6\mylevelsep}

\newcommand{\Node}[1]{%
  \settowidth{\mytextlen}{#1}
  \Tr[ref=r]{%
    \psframebox[linestyle=none]{%
      \ifthenelse{\lengthtest{\mytextlen > \NW}}%
      {
        \begin{minipage}[c]{\NW}
          \raggedleft%
          #1%
        \end{minipage}%
      }%
      %else
      {%
        #1%
      }%
    }%
  }%
}

\renewcommand{\psedge}{\ncangle}
\begin{document}
\begin{TeXtoEPS}%
 %\begin{pspicture}(0,0)(18,4)%\showgrid
  \begin{pspicture}(0,0)%\showgrid
    \psset{arrows=<-,xbbd=1.5cm,treemode=L,
    %\psset{arrows=<-,xbbd=0cm,treemode=L,
      angleA=-180,angleB=0,levelsep=\mylevelsep}
    %\pstree[treemode=R]{\Node{who}}{}{}
    \pstree{\Node{\raggedright{}yes/no decision}}
    {
      \pstree{\Node{viewName}}%
      {%
        \rput[r]{0}(-5.9,0){{\red{}who} {$\left\{\rule{0mm}{10mm}\right.$}}%
        \pstree{\Node{groupName}}%
        {%
          \Node{securityModel}%
          \Node{securityName}%
        }%
        \Node{\rput[r]{0}(-0.2,0.1){{\red{}where}
            {$\left\{\rule{0mm}{3mm}\right.$}}%
          contextName}%
        \Node{securityModel}%
        \rput[r]{0}(-2.3,-3.2){{\red{}how}
          {$\left\{\rule{0mm}{10mm}\right.$}}%
        \Node{securityLevel}%
        \Node{\rput[r]{0}(-.65,-0.3){{\red{}why}
            {$\left\{\rule{0mm}{7mm}\right.$}}%
          viewType (read/\allowbreak{}write/\allowbreak{}notify)}%
      }%
      \pstree{\Node{variableName (\OID)}}%
      {%
        \Node{\rput[r]{0}(-0.4,0.1){{\red{}what}
            {$\left\{\rule{0mm}{3mm}\right.$}}%
          object-type}%
        \Node{\rput[r]{0}(-1,-0.1){{\red{}which}
            {$\left\{\rule{0mm}{5mm}\right.$}}%
          object-instance}%
      }%
    }%
  \end{pspicture}
\end{TeXtoEPS}
\end{document}
