\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Huluvu424242 (FunThomas424242)} \pdfinfo{ /Title (jboss-forge.pdf) /Creator (Cheatography) /Author (Huluvu424242 (FunThomas424242)) /Subject (JBoss-Forge Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{JBoss-Forge Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Huluvu424242 (FunThomas424242)} via \textcolor{DarkBackground}{\uline{cheatography.com/19991/cs/4164/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Huluvu424242 (FunThomas424242) \\ \uline{cheatography.com/funthomas424242} \\ \uline{\seqsplit{github}.com/Huluvu424242} \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 20th November, 2017.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{x{2 cm} x{6 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Grundkommandos}} \tn % Row 0 \SetRowColor{LightBackground} forge & Starte Forge \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \seqsplit{command-list} & Zeigt die verfügbaren Kommandos an \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} man \textless{}command\textgreater{} & Erl{\"a}utert das angefragte Kommando \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} \seqsplit{project-new} & Erstellt interaktiv ein neues Projekt und wechselt in dessen Kontext \tn % Row Count 8 (+ 3) % Row 4 \SetRowColor{LightBackground} cd .. & Geht einen Kontext zurück (auf dem Stack) \tn % Row Count 10 (+ 2) % Row 5 \SetRowColor{white} cd \textless{}suitem\textgreater{} & Betritt einen neuen Kontext z.B. ein Unterverzeichnis, ein Projekt oder eine Datei \tn % Row Count 13 (+ 3) % Row 6 \SetRowColor{LightBackground} exit & Beendet das Programm \tn % Row Count 14 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{Forge Download: \seqsplit{http://forge.jboss.org/download} \newline Systemvoraussetzung: Java7 und gesetzte JAVA\_HOME Variable \newline Installation unter Linux: curl \seqsplit{http://forge.jboss.org/sh} | sh} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Container und Instanzverwaltung}} \tn \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Mangels Doku habe ich mit ein paar kleinen Analysen versucht herauszufinden wie die Container und Instanzen verwaltet werden. Dabei habe ich einfach in verschiedenen Terminalfenstern forge gestartet und festgestellt: \newline % Row Count 5 (+ 5) * Jedes Terminal startet einen eigenen Forge Container \newline % Row Count 7 (+ 2) * Der erste gestartete Forge Container scheint als Template bei der Initialisierung der anderen Forge Container zu dienen - er wird nach Beenden von Forge scheinbar mit dem aktuellen Stand gespeichert und dient anschlie{\ss}end wieder als Template (evtl. durch Systemsperren auf Dateien in denen der Zustand gesichert wird - unklar wo der Zustand gesichert wird) \newline % Row Count 15 (+ 8) * Kommandos scheinen als Singleton im Container gestartet zu werden und nach Beendigung des Kommandos weiter zu existieren. Ein erneuter Aufruf eines Kommandos kennt daher schon Belegungen interner Felder z.B. per Prompt injizierter Werte% Row Count 20 (+ 5) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Dynamische Vorbelegung der Auswahl}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\seqsplit{projectDirName.setDefaultValue(} \newline new Callable\textless{}String\textgreater{}() \{ \newline @Override \newline public String call() \{ \newline if (artifactId.getValue() == null) \{ \newline return "myproject"; \newline \} \newline return artifactId.getValue(); \newline \} \newline \});} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Anzuwenden im eigenen UICommand in der Methode: \newline @Override \newline public void initializeUI(UIBuilder builder) throws Exception \{} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Eigenes Kommando definieren}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{public class RadesNewLibraryProject extends AbstractUICommand implements UICommand \{ \newline \newline @Inject \newline protected ResourceFactory resourceFactory; \newline \newline @Inject \newline @WithAttributes(label = "Group ID:" \newline , required = true, defaultValue = "com.github.myUsername") \newline protected UIInput\textless{}String\textgreater{} groupId; \newline \newline @Override \newline public UICommandMetadata getMetadata(UIContext context) \{ \newline return \seqsplit{Metadata.forCommand(RadesNewLibraryProject.class)} \newline \seqsplit{.name("my-project-generator")} \newline .description("Creates a RADES lib project.") \newline \seqsplit{.category(Categories.create("Project/Generation"));} \newline \} \newline \newline @Override \newline public boolean isEnabled(UIContext context) \{ \newline return true; // logik ob commando verfügbar oder nicht \newline \} \newline \newline @Override \newline public void initializeUI(UIBuilder builder) throws Exception \{ \newline builder.add(groupId); \newline \} \newline \newline @Override \newline public Result \seqsplit{execute(UIExecutionContext} context) throws Exception \{ \newline final UIContext uiContext = context.getUIContext(); \newline final UIOutput log = \seqsplit{uiContext.getProvider().getOutput();} \newline final UIPrompt prompt = context.getPrompt(); \newline return Results \newline .success("Kommando 'rades-new-libproject' wurde erfolgreich ausgeführt."); \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Klasse oben zeigt die wichtigsten Definitionen.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}