Documentation ¶
Overview ¶
diagrammer is a package that manages
A model that contains elements of different categories A portfolio that contains diagrams with shapes. Each shape is related to one element, one kind of shape for each kind of element
Two trees:
- a "model" tree displays all elements of the models - a "portfolio" tree displays all diagrams in the folder
the "diagrams" tree allows for the selection of a diagram within the diagram package the "model" tree allows for the addition/suppression of shapes in the diagram
the "model" tree is construed by getting informations from the model
Index ¶
- func IndexOf(slice []PortfolioNode, value PortfolioNode) int
- type ButtonType
- type Diagrammer
- func (diagrammer *Diagrammer) AddPortfiolioNodeTreeNodeEntry(portfolioNode PortfolioNode, treeNode *gongtree_models.Node)
- func (diagrammer *Diagrammer) CommitTreeStage()
- func (diagrammer *Diagrammer) FillUpModelTree(modelTree *gongtree_models.Tree)
- func (diagrammer *Diagrammer) FillUpPortfolioUITree(portfolioUITree *gongtree_models.Tree)
- func (diagrammer *Diagrammer) GetElementNodeDisplayed(modelElementNode ModelElementNode) (shape Shape, ok bool)
- func (diagrammer *Diagrammer) GetMap_elementNode_treeNode() map[ModelElementNode]*gongtree_models.Node
- func (diagrammer *Diagrammer) GetPortfiolioNodeFromTreeNode(portfolioNode PortfolioNode) (treeNode *gongtree_models.Node)
- func (diagrammer *Diagrammer) IsElementDisplayed(modelElement any) (ok bool)
- func (diagrammer *Diagrammer) IsElementNodeDisplayed(modelElementNode ModelElementNode) (ok bool)
- func (diagrammer *Diagrammer) RemovePortfiolioNodeTreeNodeEntry(portfolioNode PortfolioNode)
- type Model
- type ModelElementNode
- type ModelNode
- type ModelNodeImpl
- type Portfolio
- type PortfolioCategoryNode
- type PortfolioCategoryNodeButtonAddImpl
- type PortfolioDiagramNode
- type PortfolioDiagramNodeButtonImpl
- type PortfolioDiagramNodeImpl
- type PortfolioNode
- type Shape
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IndexOf ¶
func IndexOf(slice []PortfolioNode, value PortfolioNode) int
Types ¶
type ButtonType ¶
type ButtonType int
const ( DUPLICATE ButtonType = iota EDIT_CANCEL EDIT REMOVE RENAME_CANCEL RENAME SAVE )
type Diagrammer ¶
type Diagrammer struct {
// contains filtered or unexported fields
}
func NewDiagrammer ¶
func NewDiagrammer( model Model, portfolio Portfolio, treeStage *gongtree_models.StageStruct, ) (diagrammer *Diagrammer)
func (*Diagrammer) AddPortfiolioNodeTreeNodeEntry ¶
func (diagrammer *Diagrammer) AddPortfiolioNodeTreeNodeEntry(portfolioNode PortfolioNode, treeNode *gongtree_models.Node)
func (*Diagrammer) CommitTreeStage ¶
func (diagrammer *Diagrammer) CommitTreeStage()
func (*Diagrammer) FillUpModelTree ¶
func (diagrammer *Diagrammer) FillUpModelTree(modelTree *gongtree_models.Tree)
FillUpModelTree ranges over Model Root Nodes and recursively fill up the Model Tree
func (*Diagrammer) FillUpPortfolioUITree ¶
func (diagrammer *Diagrammer) FillUpPortfolioUITree(portfolioUITree *gongtree_models.Tree)
FillUpPortfolioUITree ranges over Portfolio Root Nodes and recursively fill up the Tree UI from the Portfolio tree
func (*Diagrammer) GetElementNodeDisplayed ¶
func (diagrammer *Diagrammer) GetElementNodeDisplayed(modelElementNode ModelElementNode) (shape Shape, ok bool)
func (*Diagrammer) GetMap_elementNode_treeNode ¶
func (diagrammer *Diagrammer) GetMap_elementNode_treeNode() map[ModelElementNode]*gongtree_models.Node
func (*Diagrammer) GetPortfiolioNodeFromTreeNode ¶
func (diagrammer *Diagrammer) GetPortfiolioNodeFromTreeNode(portfolioNode PortfolioNode) (treeNode *gongtree_models.Node)
func (*Diagrammer) IsElementDisplayed ¶
func (diagrammer *Diagrammer) IsElementDisplayed(modelElement any) (ok bool)
func (*Diagrammer) IsElementNodeDisplayed ¶
func (diagrammer *Diagrammer) IsElementNodeDisplayed(modelElementNode ModelElementNode) (ok bool)
func (*Diagrammer) RemovePortfiolioNodeTreeNodeEntry ¶
func (diagrammer *Diagrammer) RemovePortfiolioNodeTreeNodeEntry(portfolioNode PortfolioNode)
type ModelElementNode ¶
type ModelElementNode interface { ModelNode GetElement() any // CanBeAddedToDiagram returns true if the model element can be displayed CanBeAddedToDiagram() bool AddToDiagram() RemoveFromDiagram() // GetLinkedNode returns a node to navigate to GetLinkedNode() ModelElementNode }
type ModelNodeImpl ¶
type ModelNodeImpl struct {
// contains filtered or unexported fields
}
func (*ModelNodeImpl) OnAfterUpdate ¶
func (modelNodeImpl *ModelNodeImpl) OnAfterUpdate(stage *gongtree_models.StageStruct, stagedNode *gongtree_models.Node, frontNode *gongtree_models.Node)
OnAfterUpdate implements models.NodeImplInterface
type Portfolio ¶
type Portfolio interface { // GeneratesProgeny generates and returns the root nodes of the tree for navigating the portfolio // root nodes themselves generate their progreny GeneratesProgeny() []PortfolioNode // GetChildren return the root nodes GetChildren() []PortfolioNode // IsInSelectionMode is true is at least one diagram has been selected IsInSelectionMode() bool // the end user can select a diagram to display GetSelectedPortfolioDiagramNode() PortfolioDiagramNode IsInDrawingMode() bool AddElementToDiagram(ModelElementNode) map[ModelElementNode]Shape RemoveElementFromDiagram(ModelElementNode) map[ModelElementNode]Shape }
Portfolio interface to be implemented by the Portfolio adapter
type PortfolioCategoryNode ¶
type PortfolioCategoryNode interface { PortfolioNode // HasAddDiagramButton is true if a "Add" button has to be displayed // when the add button is pressed, it calls AddDiagram() HasAddDiagramButton() bool // AddDiagram allows the end user to request the creation a new Diagram/PortfolioNode AddDiagram() PortfolioDiagramNode }
type PortfolioCategoryNodeButtonAddImpl ¶
type PortfolioCategoryNodeButtonAddImpl struct {
// contains filtered or unexported fields
}
func NewDiagramButtonAddImpl ¶
func NewDiagramButtonAddImpl( portfolioCategoryNode PortfolioCategoryNode, diagrammer *Diagrammer, treeNode *gongtree_models.Node, treeStage *gongtree_models.StageStruct, ) (portfolioCategoryNodeButtonAddImpl *PortfolioCategoryNodeButtonAddImpl)
func (*PortfolioCategoryNodeButtonAddImpl) ButtonUpdated ¶
func (buttonImpl *PortfolioCategoryNodeButtonAddImpl) ButtonUpdated( gongtreeStage *gongtree_models.StageStruct, stageButton, front *gongtree_models.Button)
type PortfolioDiagramNode ¶
type PortfolioDiagramNode interface { PortfolioNode // DisplayDiagram request the portfolio to display the diagram DisplayDiagram() map[ModelElementNode]Shape HasDrawButton() bool DrawDiagram() map[ModelElementNode]Shape CancelEdit() map[ModelElementNode]Shape SaveDiagram() map[ModelElementNode]Shape IsInDrawingMode() bool HasDiagramRenameButton() bool RenameDiagram(newName string) error IsInRenameMode() bool SetIsInRenameMode(isInRenameMode bool) HasDuplicateButton() bool DuplicateDiagram() PortfolioDiagramNode // returns the new diagram HasDeleteButton() bool DeleteDiagram() }
type PortfolioDiagramNodeButtonImpl ¶
type PortfolioDiagramNodeButtonImpl struct { ButtonType // contains filtered or unexported fields }
func NewPortfolioDiagramNodeButtonImpl ¶
func NewPortfolioDiagramNodeButtonImpl( portfolioDiagramNode PortfolioDiagramNode, diagrammer *Diagrammer, treeNode *gongtree_models.Node, treeStage *gongtree_models.StageStruct, buttonType ButtonType, ) (buttonImpl *PortfolioDiagramNodeButtonImpl)
func (*PortfolioDiagramNodeButtonImpl) ButtonUpdated ¶
func (buttonImpl *PortfolioDiagramNodeButtonImpl) ButtonUpdated( gongtreeStage *gongtree_models.StageStruct, stageButton, front *gongtree_models.Button)
type PortfolioDiagramNodeImpl ¶
type PortfolioDiagramNodeImpl struct {
// contains filtered or unexported fields
}
func (*PortfolioDiagramNodeImpl) OnAfterUpdate ¶
func (portfolioDiagramNodeImpl *PortfolioDiagramNodeImpl) OnAfterUpdate(stage *gongtree_models.StageStruct, stagedNode *gongtree_models.Node, frontNode *gongtree_models.Node)
OnAfterUpdate implements models.NodeImplInterface
type PortfolioNode ¶
type PortfolioNode interface { // GetName() returns the Name that is displayed on the node GetName() string // GetParent returns the node above GetParent() PortfolioNode // GeneratesProgeny generates and returns the nodes below the node // it recursively GeneratesProgeny() []PortfolioNode GetChildren() []PortfolioNode // AppendChildren allows for dynmicaly adding a node below the node AppendChildren(PortfolioNode) // RemoveChildren allows for dynmicaly adding a node below the node RemoveChildren(PortfolioNode) // IsExpanded is true if the the node is visualy expanded IsExpanded() bool }
PortfolioNode has to be implemented by the Adapter Nodes
func Remove ¶
func Remove(slice []PortfolioNode, index int) []PortfolioNode
Source Files ¶
- diagrammer.go
- docs.go
- index_func.go
- model.go
- model_element_node.go
- model_node.go
- model_node_impl.go
- portfolio.go
- portfolio_category_node.go
- portfolio_category_node_button_add_impl.go
- portfolio_diagram_node.go
- portfolio_diagram_node_button_impl.go
- portfolio_diagram_node_impl.go
- portfolio_node.go
- shape.go