Implementando o Método de Layout

Dependendo das características do algoritmo de layout, algumas das etapas necessárias podem ser diferentes ou desnecessárias ou, ainda, outras etapas podem ser necessárias.
Dependendo da implementação particular do seu algoritmo de layout, outros métodos da classe de layout de gráfico base podem ser substituídos. Por exemplo, se sua subclasse suportar alguns dos parâmetros genéricos da classe base, você deverá substituir o método supports[ParameterName] (consulte Parâmetros e Recursos da Classe Base).
Para obter informações adicionais sobre a classe ibm_ilog.graphlayout.GraphLayout, consulte a documentação da biblioteca de classes.
Para implementar o método layout no algoritmo de layout customizado de amostra:
  1. Obtenha o modelo de gráfico (getGraphModel() na instância do layout).
    var model = this.getGraphModel();
    
  2. Obtenha a instância do relatório de layout que é automaticamente criado quando o método performLayout é chamado a partir da superclasse (getLayoutReport() na instância do layout), consulte Usando um Relatório de Layout de Gráfico.
    var report = this.getLayoutReport();
    
  3. Obtenha o parâmetro da região de layout para calcular a área em que os nós serão posicionados.
    var rect = this.getCalcLayoutRegion();
    
  4. Obtenha um vetor dos nós (propriedade nodes na instância do modelo de layout de gráfico).
    var nds = model.getNodes();
    
  5. Procure os nós, ignorando nós fixos (isFixed(node) na instância de layout) se solicitado pelo usuário (isPreserveFixedNodes() na instância de layout).
                    var count = nds.length;
                    for (var i = 0; i < count; i++) {
                        var node = nds[i];
                        ...
                    }
    
    
    (Para obter detalhes sobre nós fixos, consulte Preservar Nós Fixos).
  6. Mova cada nó para as coordenadas recém-calculadas dentro da região de layout:
    model.moveNode
    model.moveNode(node, x, y);
    
  7. Notifique os listeners em eventos de layout de que um novo nó foi posicionado. Isto permite que o usuário implemente, por exemplo, uma barra de progresso, se um listener de eventos de layout tiver sido registrado na instância de layout. (Para obter detalhes sobre listeners de eventos, consulte Usando Listeners de Eventos.)
    Na instância de layout, chame:
    this.callLayoutStepPerformedIfNeeded();
    
  8. Por último, configure o código no relatório de layout.
    report.code = ibm_ilog.graphlayout.GraphLayoutReport.LAYOUT_DONE;
    
Depois de implementar seu próprio algoritmo de layout MyRandomLayout, será possível usá-lo diretamente em Dojo JavaScript.