1 package com.proalpha.pds.ui.handlers;
3 import java.lang.reflect.InvocationTargetException;
5 import org.eclipse.core.commands.AbstractHandler;
6 import org.eclipse.core.commands.ExecutionEvent;
7 import org.eclipse.core.commands.ExecutionException;
8 import org.eclipse.core.resources.IFile;
9 import org.eclipse.core.resources.IResource;
10 import org.eclipse.core.resources.ResourcesPlugin;
11 import org.eclipse.core.runtime.jobs.ISchedulingRule;
12 import org.eclipse.jface.dialogs.MessageDialog;
13 import org.eclipse.jface.operation.IRunnableContext;
14 import org.eclipse.jface.operation.IRunnableWithProgress;
15 import org.eclipse.swt.widgets.Display;
16 import org.eclipse.swt.widgets.Shell;
17 import org.eclipse.ui.PlatformUI;
19 import com.proalpha.pds.generator.GeneratorFactory;
20 import com.proalpha.pds.generator.OOABLExitFileGenerator;
21 import com.proalpha.pds.generator.UserExitFileGenerator;
22 import com.proalpha.pds.paconnector.PaProject;
23 import com.proalpha.pds.paconnector.parameter.ParameterFactory;
24 import com.proalpha.pds.paconnector.parameter.StartparameterReader;
25 import com.proalpha.pds.paconnector.utils.ExceptionUtils;
26 import com.proalpha.pds.templates.data.DataContainerFactory;
27 import com.proalpha.pds.templates.data.IGeneratorDataContainer;
28 import com.proalpha.pds.ui.Activator;
49 public Object execute(ExecutionEvent event)
throws ExecutionException {
51 PaProject paProject = com.proalpha.pds.paconnector.Activator.getDefault().getProjectManager().getPaProjectByTextSelection();
52 if (paProject !=
null && paProject.isAvailable()) {
53 generateUserExits(paProject);
58 private void generateUserExits(
PaProject paProject) {
60 IRunnableWithProgress runnable = monitor -> {
62 String pAProcedure =
null;
66 monitor.beginTask(
"Generate Userexit", 4);
70 .createStartparameterReader(paProject);
72 file = com.proalpha.pds.paconnector.Activator.getDefault().getProjectManager().getFileFromActiveSelection();
75 pAProcedure = file.getName();
78 final Shell activeShell = Display.getDefault().getActiveShell();
79 MessageDialog.openError(activeShell,
"no procedure name",
"can't find filename in current selection.");
84 datacontainer.setFileName(pAProcedure);
85 datacontainer.setVersion(paProject.getVersion());
86 datacontainer.setCustomLevel(paProject.getCustomLevel());
87 datacontainer.setObjectInfo(datacontainer.getRepositoryInformations().getProgramShortDesc(pAProcedure));
89 if (pAProcedure.endsWith(
".cls")) {
91 String pAParentClaasObj = datacontainer.getRepositoryInformations().getClassOBJ(pAProcedure);
93 .setParentObject(datacontainer.getRepositoryInformations().
getClassName(pAParentClaasObj));
101 datacontainer.setParentObject(pAProcedure);
111 }
catch (Exception exception) {
117 ISchedulingRule rule = ResourcesPlugin.getWorkspace().getRoot();
118 IRunnableContext context = PlatformUI.getWorkbench().getProgressService();
121 PlatformUI.getWorkbench().getProgressService().runInUI(context, runnable, rule);
122 }
catch (InvocationTargetException e) {
124 }
catch (InterruptedException e) {
126 Thread.currentThread().interrupt();
void generateUserExitClassAndBalpEntry()
void generateUserExitClassAndBalpEntry()
static Activator getDefault()
static void showAndLogErrorMessage(AbstractUIPlugin plugin, Throwable exception)
IFolder getWorkingDirectory()