package gov.nasa.jpl.mbee.mdk.validation;
import com.nomagic.magicdraw.annotation.Annotation;
import com.nomagic.magicdraw.core.Application;
import com.nomagic.task.ProgressStatus;
import com.nomagic.task.RunnableWithProgress;
import com.nomagic.ui.ProgressMonitorHelper;
import java.util.Collection;
public abstract class IndeterminateProgressMonitorProxy extends GenericRuleViolationAction implements RunnableWithProgress {
/**
*
*/
private static final long serialVersionUID = 1L;
public IndeterminateProgressMonitorProxy(final String name) {
super(name);
}
public static IndeterminateProgressMonitorProxy wrap(final GenericRuleViolationAction action) {
return new IndeterminateProgressMonitorProxy(action.getName()) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void run(ProgressStatus progressStatus) {
Application.getInstance().getGUILog().log("PROGRESS STATUS!");
progressStatus.setIndeterminate(true);
run();
}
@Override
public void run() {
action.run();
}
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
action.actionPerformed(e);
}
@Override
public boolean canExecute(Collection<Annotation> annotations) {
return action.canExecute(annotations);
}
@Override
public void execute(Collection<Annotation> annotations) {
action.execute(annotations);
}
@Override
public String getName() {
return action.getName();
}
@Override
public String getSessionName() {
return action.getSessionName();
}
};
}
public static void execute(final IndeterminateProgressMonitorProxy proxy, final String description) {
ProgressMonitorHelper.executeWithProgress(proxy, description, false, 0);
}
public static void execute(final GenericRuleViolationAction action, final String description) {
execute(wrap(action), description);
}
public static GenericRuleViolationAction wrap(final IndeterminateProgressMonitorProxy action, final String description) {
return new GenericRuleViolationAction(action.getName()) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void run() {
action.run();
}
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
action.actionPerformed(e);
}
@Override
public boolean canExecute(Collection<Annotation> annotations) {
return action.canExecute(annotations);
}
@Override
public void execute(Collection<Annotation> annotations) {
action.execute(annotations);
}
@Override
public String getName() {
return action.getName();
}
@Override
public String getSessionName() {
return action.getSessionName();
}
};
}
public static GenericRuleViolationAction doubleWrap(final GenericRuleViolationAction action, final String description) {
return action;
}
public static GenericRuleViolationAction doubleWrapp(final GenericRuleViolationAction action, final String description) {
return new GenericRuleViolationAction(action.getName()) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void run() {
action.run();
}
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
action.actionPerformed(e);
}
@Override
public boolean canExecute(Collection<Annotation> annotations) {
return action.canExecute(annotations);
}
@Override
public void execute(Collection<Annotation> annotations) {
action.execute(annotations);
}
@Override
public String getName() {
return action.getName();
}
@Override
public String getSessionName() {
return action.getSessionName();
}
};
}
private class SpoofedRunnableWithProgress implements RunnableWithProgress {
private boolean isCompleted;
@Override
public void run(ProgressStatus progressStatus) {
progressStatus.setIndeterminate(true);
while (!isCompleted) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}