Package net.sf.redmine_mylyn.internal.ui.query

Source Code of net.sf.redmine_mylyn.internal.ui.query.AbstractRedmineRepositoryQueryPage

package net.sf.redmine_mylyn.internal.ui.query;

import java.lang.reflect.InvocationTargetException;

import net.sf.redmine_mylyn.api.exception.RedmineApiErrorException;
import net.sf.redmine_mylyn.api.model.Configuration;
import net.sf.redmine_mylyn.api.query.Query;
import net.sf.redmine_mylyn.core.RedmineRepositoryConnector;
import net.sf.redmine_mylyn.internal.ui.Messages;
import net.sf.redmine_mylyn.ui.RedmineUiPlugin;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositoryQueryPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.progress.IProgressService;

public abstract class AbstractRedmineRepositoryQueryPage extends AbstractRepositoryQueryPage {

  private final RedmineRepositoryConnector connector;
 
  private final Configuration configuration;
 
  public AbstractRedmineRepositoryQueryPage(String title, TaskRepository repository, IRepositoryQuery query, RedmineRepositoryConnector connector, Configuration configuration) {
    super(title, repository, query);

    this.connector = connector;
    this.configuration = configuration;
  }

  abstract protected void configurationChanged();
 
  public Configuration getConfiguration() {
    return configuration;
  }

  protected void updateRepositoryConfiguration(final boolean force) {
    try {
      IRunnableWithProgress runnable = new IRunnableWithProgress() {
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
          try {
            if (force || connector.isRepositoryConfigurationStale(getTaskRepository(), monitor)) {
              connector.updateRepositoryConfiguration(getTaskRepository(), monitor);
            }
          } catch (CoreException e) {
            throw new InvocationTargetException(e, Messages.ERRMSG_UPDATING_ATTRIBUTES_FAILED);
          }
        }
      };

      if (getContainer() != null) {
        getContainer().run(true, true, runnable);
      } else if (getSearchContainer() != null) {
        getSearchContainer().getRunnableContext().run(true, true, runnable);
      } else {
        IProgressService service = PlatformUI.getWorkbench().getProgressService();
        service.busyCursorWhile(runnable);
      }
    } catch (InvocationTargetException e) {
      ((AbstractRedmineRepositoryQueryPage)getContainer().getCurrentPage()).setErrorMessage(e.getMessage());
      return;
    } catch (InterruptedException e) {
      return;
    }
   
    configurationChanged();
  }

  protected Query getRedmineQuery() {
    IRepositoryQuery repositoryQuery = getQuery();
    if(repositoryQuery!=null ) {
      try {
        return Query.fromUrl(repositoryQuery.getUrl(), getTaskRepository().getCharacterEncoding(), getConfiguration());
      } catch (RedmineApiErrorException e) {
        IStatus status = RedmineUiPlugin.toStatus(e, Messages.ERRMSG_RESTORING_QUERY_FAILED);
        StatusHandler.log(status);
        setErrorMessage(status.getMessage());
      }
    }
   
    return null;
  }
}
TOP

Related Classes of net.sf.redmine_mylyn.internal.ui.query.AbstractRedmineRepositoryQueryPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.