Organizando Componentes Conectados de um Gráfico Desconectado

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).
Um exemplo
de um gráfico com quatro componentes conectados organizados individualmente e
posicionados usando um algoritmo de posicionamento altamente customizável
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.