// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.cwm.compare.ui.actions;
import java.lang.reflect.InvocationTargetException;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.swt.widgets.Display;
import org.talend.core.model.metadata.builder.connection.Connection;
import org.talend.cwm.compare.exception.ReloadCompareException;
import org.talend.cwm.compare.factory.ComparisonLevelFactory;
import org.talend.cwm.compare.factory.IComparisonLevel;
import org.talend.cwm.compare.i18n.Messages;
import org.talend.cwm.compare.ui.ImageLib;
import org.talend.dataprofiler.core.CorePlugin;
import org.talend.dataprofiler.core.ui.progress.ProgressUI;
import org.talend.dataprofiler.core.ui.utils.MessageUI;
import org.talend.dataprofiler.core.ui.views.DQRespositoryView;
/**
* DOC mzhao class global comment. Compare selected model elements action.
*/
public class SelectedComparisonAction extends Action {
private static Logger log = Logger.getLogger(SelectedComparisonAction.class);
private Object selectedObj1, selectedObj2;
public SelectedComparisonAction(String menuText) {
super(menuText);
setImageDescriptor(ImageLib.getImageDescriptor(ImageLib.COMPARE_IMAGE));
}
/**
* DOC mzhao Refrech selected object when selection changed.
*
* @param mSelectedObj1
* @param mSelectedObj2
*/
public void refreshSelectedObj(Object mSelectedObj1, Object mSelectedObj2) {
this.selectedObj1 = mSelectedObj1;
this.selectedObj2 = mSelectedObj2;
}
@Override
public void run() {
IRunnableWithProgress op = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException {
final IComparisonLevel creatComparisonLevel = ComparisonLevelFactory.creatComparisonLevel(selectedObj1,
selectedObj2);
Display.getDefault().asyncExec(new Runnable() {
public void run() {
try {
creatComparisonLevel.popComparisonUI(new UiHandler());
} catch (ReloadCompareException e) {
log.error(e, e);
}
}
});
}
};
try {
ProgressUI.popProgressDialog(op);
if (selectedObj1 instanceof Connection && selectedObj2 instanceof Connection) {
DQRespositoryView repositoryView = CorePlugin.getDefault().getRepositoryView();
if (repositoryView != null) {
repositoryView.refresh();
}
}
} catch (InvocationTargetException e) {
MessageUI.openError(Messages.getString("PopComparisonUIAction.checkConnectionFailure", e.getCause().getMessage())); //$NON-NLS-1$
log.error(e, e);
} catch (InterruptedException e) {
log.error(e, e);
}
}
}