Pergunta

É possível usar uma barra de progresso com um mxIGraphLayout? Eu tenho um gráfico que leva um tempo não trivial para o layout e gostaria que o usuário pudesse ver isso, sim, algo está acontecendo.

Idealmente, eu gostaria de algo que eu possa interpretar (mesmo aproximadamente) como uma porcentagem, mas nem parece haver uma maneira de adicionar ouvintes que são chamados durante o layout.

Se isso importa, estou usando mxOrganicLayout Mas posso mudar no futuro.

Foi útil?

Solução

O pode ser realizado um pouco estendendo -se mxOrganicLayout e substituindo os seguintes métodos

    @Override
    public void execute(Object cell)
    {
        progress.setProgress(0);
        try
        {
            super.execute(cell);
        }
        finally
        {
            progress.setProgress(maxIterations);
        }

    }

    @Override
    protected void performRound()
    {
        progress.setNote("Iteration " + iteration);
        progress.setProgress(iteration);
        super.performRound();
    }

    final ProgressMonitor progress;

Obviamente, você precisa definir progress em algum momento também. execute Notifique o monitor de progresso que a execução foi iniciada e a fecha quando for concluída.

performRound é chamado para fazer as atualizações reais, portanto, o incremento do progresso fará com que a barra de progresso avançasse.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top