IBM® ILOG® Dojo Diagrammer provides special support for
the layout of a disconnected graph.
If a graph is composed of several connected components or contains isolated nodes (nodes without
any links), it can be desirable to apply the layout algorithm separately
to each connected component and then to position the connected components
using a specialized layout algorithm (usually, ibm_ilog.graphlayout.grid.GridLayout). A figura a seguir mostra um exemplo de um gráfico contendo quatro
componentes conectados. Ativando o layout dos componentes conectados
na instância de layout regular (aqui, ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout), os componentes conectados são automaticamente identificados
e organizados individualmente. Por último, os quatro componentes conectados
são posicionados usando um algoritmo de posicionamento altamente customizável (ibm_ilog.graphlayout.grid.GridLayout).

Llayout automático de componentes conectados em um gráfico
desconectado
Para indicar se uma subclasse de ibm_ilog.graphlayout.GraphLayout suporta este recurso, use seu método:
supportsLayoutOfConnectedComponents()
A implementação padrão retorna
false
.
Uma subclasse pode substituir este método para retornar true
para indicar que este recurso é suportado. É possível ativar o layout dos componentes conectados
usando o método setLayoutOfConnectedComponentsEnabled(true).
Para obter a configuração atual:
var enabled = layout.isLayoutOfConnectedComponentsEnabled();
O valor padrão é o valor retornado pelo seguinte método:
isLayoutOfConnectedComponentsEnabledByDefault()
A implementação padrão deste método em ibm_ilog.graphlayout.GraphLayout retorna
false
.
Para algumas das classes de layout, é apropriado que este recurso seja ativado
por padrão e que elas substituam este método para retornar true
.
Se ativado em uma classe de layout que suporta este recurso,
o método
performLayout
da classe ibm_ilog.graphlayout.GraphLayout
recortará o modelo de gráfico anexado aos componentes conectados e organizará
cada componente conectado separadamente. Como o layout do recurso de componentes conectados funciona
quando este mecanismo é ativado nas classes de layout que suportam
este recurso? Em vez de executar o layout do gráfico inteiro,
o método performLayout primeiro recorta o gráfico
em componentes conectados.
Em seguida, cada componente conectado é organizado separadamente
por uma chamada do método
layout
. Para fazer isso, o gráfico anexado é temporariamente alterado para gráficos gerados internamente que correspondem a cada um dos componentes conectados do gráfico original. Por último, a instância de layout especificada pelo método setLayoutOfConnectedComponents:
layout.setLayoutOfConnectedComponents(connectedComponentsLayout);
é usada para posicionar os componentes conectados. Para especificar
a instância de layout que posiciona os componentes conectados, chame
o método setLayoutOfConnectedComponents.
Se nenhuma instância de layout for especificada usando este método,
o método
getLayoutOfConnectedComponents
retornará
uma instância de ibm_ilog.graphlayout.grid.GridLayout. Seu parâmetro da região de layout é configurado por padrão para o retângulo (0
, 0
, 800
, 800
).
Seu parâmetro de modo de layout é configurado para ibm_ilog.graphlayout.grid.GridLayout.TILE_TO_ROWS. Nota
Os layouts de Árvore e Hierárquico contêm
suporte integrado para gráficos desconectados. Para os layouts de Árvore e Hierárquico,
o resultado pode ser diferente do resultado do mecanismo genérico
(o layout do recurso de componentes conectados) fornecido
pela classe base ibm_ilog.graphlayout.GraphLayout. Dependendo de suas necessidades específicas, é possível usar
o mecanismo genérico ou o suporte integrado.