Em um aplicativo que não funciona diretamente em gráficos,
operações como anexar ou desanexar uma instância de layout de gráfico devem
ser executadas explicitamente.
A Classe Base
A classe ibm_ilog.graphlayout.GraphLayout
é a classe base para todos os algoritmos de layout.
Esta classe é uma classe abstrata e não pode ser usada diretamente. Você deve usar uma de suas subclasses: ibm_ilog.graphlayout.hierarchical.HierarchicalLayout, ibm_ilog.graphlayout.tree.TreeLayout, ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout, ibm_ilog.graphlayout.shortlink.ShortLinkLayout, ibm_ilog.graphlayout.longlink.LongLinkLayout, ibm_ilog.graphlayout.random.RandomLayout, ibm_ilog.graphlayout.circular.CircularLayout, ibm_ilog.graphlayout.grid.GridLayout. Também é possível criar suas próprias subclasses para implementar outros algoritmos
de layout. Consulte o Definindo seu Próprio Tipo de Layout.
Embora apenas as subclasses de
GraphLayout
sejam
usadas diretamente para obter os layouts, é necessário aprender sobre esta
classe porque ela contém métodos que são herdados (ou substituídos)
pelas subclasses. Você deve entendê-la para criar suas próprias subclasses. 
A Classe GraphLayout e suas subclasses e relacionamentos
com relatórios de layout
Instanciando uma Subclasse da Classe Base
A classe ibm_ilog.graphlayout.GraphLayout é
uma classe abstrata. Ela não possui construtores. Você instancia
uma subclasse conforme mostrado no exemplo a seguir:
var layout = new ibm_ilog.graphlayout.tree.TreeLayout();
Anexando ou Desanexando o Layout de um Gráfico ou Diagrama
No IBM® ILOG® Dojo Diagrammer,
você deve anexar o layout a uma instância de widget ibm_ilog.diagram.widget.Diagram
ou a uma instância ibm_ilog.diagram.Graph.
Se você usar o widget Diagram,
anexe o layout usando os atributos nodeLayout ou linkLayout
do widget Diagram. O seguinte exemplo mostra como é possível fazer isso na marcação HTML do widget Diagram:
<div jsId="linkLayout" dojoType="ibm_ilog.graphlayout.shortlink.ShortLinkLayout"/> <div id="diagram" dojoType="ibm_ilog.diagram.widget.Diagram" nodeLayout="treeLayout"/>
O atributo nodeLayout é usado para configurar o algoritmo de layout de gráfico principal que posiciona os nós e links do Diagram. É possível também usar o atributo linkLayout para configurar um segundo layout que roteia apenas os links do Diagram.
Consulte o seguinte exemplo:
<div jsId="linkLayout" dojoType="ibm_ilog.graphlayout.shortlink.ShortLinkLayout"/> <div id="diagram" dojoType="ibm_ilog.diagram.widget.Diagram" linkLayout="linkLayout"/>
Também é possível configurar o nó ou layout de link de um Diagram
em JavaScript:
var diagram = dijit.byId("diagram"); var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); var linkLayout = new ibm_ilog.graphlayout.shortlink.ShortLinkLayout(); diagram.attr("nodeLayout", treeLayout); diagram.attr("linkLayout", linkLayout);
Se você trabalhar diretamente com o objeto Graph
(ou seja, se não usar o widget Diagram, mas
trabalhar diretamente com as APIs GFX), deverá usar os métodos setNodeLayout ou setLinkLayout
para anexar o layout ao Graph:
var graph = surface.createGraph(); var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); var linkLayout = new ibm_ilog.graphlayout.shortlink.ShortLinkLayout(); graph.setNodeLayout(treeLayout); graph.setLinkLayout(linkLayout);
Executando um Layout
Quando o algoritmo de layout estiver anexado a uma instância Diagram ou Graph,
use o método performGraphLayout
do Diagram ou Graph
para iniciar o layout:
diagram.performGraphLayout();
ou
graph.performGraphLayout();
O método abstrato protegido
layout(boolean
redraw)
da subclasse GraphLayout
é então chamado. Isto significa que o controle é
passado para as subclasses que implementam este método. A implementação
calcula o layout e move os nós para novas posições ou redimensiona os
links, ou move os nós e redimensiona os links. O método
getLayoutReport
do layout de gráfico retorna uma instância de ibm_ilog.graphlayout.GraphLayoutReport (ou de uma subclasse) que contém informações sobre
o comportamento do algoritmo de layout. Ele informa se o algoritmo
foi executado normalmente ou se ocorreu um caso específico, predefinido.
(Para obter uma descrição mais detalhada do
relatório de layout, consulte Usando um Relatório de Layout de Gráfico.) Informações Adicionais
É possível localizar informações adicionais sobre a classe ibm_ilog.graphlayout.GraphLayout nas
seguintes seções:
- Parâmetros e Recursos da Classe Base contém os métodos que estão relacionados à customização dos algoritmos de layout.
- Usando Listeners de Eventos informa sobre o mecanismo do listener de eventos de layout.
- Definindo seu Próprio Tipo de Layout informa como implementar novas subclasses.
Para obter detalhes sobre ibm_ilog.graphlayout.GraphLayout e
outras classes de layout de gráfico, consulte IBM® ILOG® Dojo Diagrammer API
Reference Documentation.