\section{Features}\label{sec:features} The following features are either planned (\planned), under construction (\progress) or done (\done): \begin{itemize} \item[\done] Reading a graph from an input file as described in section~\ref{sec:inputFileFormat}. \item[\done] Creating random graphs for testing purposes. \begin{itemize} \item[\done] Saving those randomly created graphs. \end{itemize} \item[\done] Drawing a graph with specified node sizes and positions. \item[\done] Running the node placement algorithm by Brandes and Köpf~\cite{brandes_fast_2001}. \begin{itemize} \item[\done] Calculating the conflicts between edges. \begin{itemize} \item[\done] Differentiating between dummy nodes and non-dummy nodes. \end{itemize} \item[\done] Calculating the blocks. \item[\done] Compacting the layout. \item[\done] Combining the layouts. \end{itemize} \item[\done] Illustrating the progress while the algorithm is running in the form of \begin{itemize} \item[\done] Drawing the nodes at their current position. \begin{itemize} \item[\done] Hovering the mose over a node to highlight it in all layouts. \item[\done] Drawing the nodes in the color of their blocks. \item[\done] Drawing a colored background to show the class assignments. \item[\done] Drawing dummy nodes differently from other nodes. \end{itemize} \item[\done] Drawing the edges just as plain straight lines. \begin{itemize} \item[\done] Drawing the conflicted edges in a different color. \end{itemize} \item[\planned] Drawing the edges of the block graph (yet another color, low priority). \item[\done] Drawing the four extremal layouts and the combined layout separately. \begin{itemize} \item[\done] Optionally, drawing the only the extremal layout the algorithm is currently working on. \end{itemize} \item[\done] Showing pseudocode and the position where the algorithm currently is. \begin{itemize} \item[\done] Clicking on the pseudocode to set a breakpoint at (not \reserved{goto}) a specific location. \item[\done] Customizing the font size of the code. \end{itemize} \item[\done] Showing a legend to explain the shapes and colors. \item[\done] Showing tooltips when hovering over code lines and nodes in the graph that show the state of the variables. \end{itemize} \item[\done] Running the algorithm step by step manually. \item[\done] Running the algorithm step by step with configurable delay (\enquote{automatic execution}). \item[\done] Running the algorithm only on the expanded parts of the source code (\enquote{step overrun}). \begin{itemize} \item[\done] Right clicking the code to expand or collapse all lines up to a specified level. \end{itemize} \item[\done] Using debugger-like commands such as \enquote{step into}, \enquote{step over}, \enquote{step out}. \item[\done] Running the algorithm backwards, both manually and automatic, using \enquote{step backwards into}, \enquote{step backwards over}, \enquote{step backwards out}. \item[\done] Adding buttons and other graphical elements to support the user interface (low priority, see figure~\ref{fig:sketch}). Currently there is only keyboard input (cf.\ section~\ref{sec:userInterface}). \begin{itemize} \item[\done] Displaying the buttons. \item[\done] Making all the buttons work. \end{itemize} \item[\done] Working with hierarchical graphs. \item[\done] Scaling the display with the (adjustable) window size. \item[\planned] Working with disconnected graphs (cf.\ section~\ref{sec:assumptions}), either by modifying the algorithm or by processing the connected components one by one (low priority). \item[\done] Creating ElkNode~\cite{noauthor_elk:_2018} objects from LayeredGraphNode (\ref{sec:graph}) objects. \item[\planned] Creating LayeredGraphNode (\ref{sec:graph}) objects from ElkNode~\cite{noauthor_elk:_2018} objects (low priority). \end{itemize} \section{Known Issues}\label{sec:knownIssues} Only the most important unsolved issues are listed here. For a complete list, see \url{http://gogs.koljastrohm-games.com/GraphDrawer/NodeShuffler/issues}. \begin{itemize} \item[\done] The most important issues were solved. \end{itemize}