cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Learn all about the Community Ranking System, a fun gamification element of the PTC Community. X

J-Link + Swing GUI

mali
7-Bedrock

J-Link + Swing GUI

I've created a J-Link application, which has a swing GUI. On click of a UI command button, I'm creating a part files (simulating File--> New Part). The same thing when wanted to simulate through a swing GUI in synchronous mode, the GUI gets created, but when I push the button in the GUI, the GUI hangs. Can any one help me in making the swing GUI work with PROE?

class MenuButtonListener extends DefaultUICommandActionListener {

public void OnCommand() {

try {

//This works

Session curSession = pfcGlobal.GetProESession();

Model tryModel = curSession.CreatePart("Testing");

tryModel.Display();

//This doesn't work

//How to make it work

csProe.StepToProeGui.createAndShowGUI();


} catch (Exception x) {

STEP_TO_PROE.printMsg("something wrong: " + x);

x.printStackTrace();

System.out.println("------------------------------------");

}

}

}

ACCEPTED SOLUTION

Accepted Solutions
mali
7-Bedrock
(To:mali)

Ok Finally got it.

It is possible to call an PROE action from a swing GUI. Use the following code to test it.

Conclusion:

JFrame doesnt work in Synchronous J-Link application

JDialog works in Synchronous application by seeting the flag "setModal(true);"

/*

07-Feb-00 I-03-26 JCN $$1 Renamed and upgraded.

30-Jan-03 J-03-41 JCN $$2 Install test adds menu button.

*/

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JDialog;

import com.ptc.cipjava.jxthrowable;

import com.ptc.pfc.pfcCommand.DefaultUICommandActionListener;

import com.ptc.pfc.pfcCommand.UICommand;

import com.ptc.pfc.pfcGlobal.pfcGlobal;

import com.ptc.pfc.pfcModel.Model;

import com.ptc.pfc.pfcSession.Session;

/**

* This class is used to start the jlink application in proe. The name of the

* class has to appear in the protk.dat under the java_app_class option.

**/

public class JlinkSwingTest {

// =========================================================================

/**

* This method is called by proe upon starting a jlink application This

* method gets the current session from the pfcGlobal(environment) Then it

* calls the install test with the session as the argument.

**/

public static void start() {

printMsg("Started");

try {

Session curSession = pfcGlobal.GetProESession();

UICommand cmd = curSession.UICreateCommand("MyFirstApp",

new MenuButtonListener());

curSession.UIAddButton(cmd, "File", null, "MyButton", "HelpTag",

"msg_JlinkSwingTest.txt");

}

catch (jxthrowable x) {

printMsg("something wrong: " + x);

x.printStackTrace();

System.out.println("------------------------------------");

}

}

// =========================================================================

/**

* This method is used for cleanup and etc... Called when the jlink

* application exits

*/

public static void stop() {

printMsg("Stop");

}

// =========================================================================

/**

* This method prints a string to the standard output.

*/

public static void printMsg(String msg) {

System.out.println("JLINK-Testing: " + msg);

}

}

/**

* @author XXXXXX

*

*/

class MenuButtonListener extends DefaultUICommandActionListener {

public void OnCommand() {

try {

JDialog f = new JDialog();

JButton jb = new JButton("Testing1");

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

try {

Session curSession = pfcGlobal.GetProESession();

Model tryModel = curSession.CreatePart("Testing1");

tryModel.Display();

} catch (jxthrowable x) {

x.printStackTrace();

System.out

.println("------------------------------------");

}

}

});

f.add(jb);

f.pack();

f.setModal(true);

f.setVisible(true);

} catch (Exception x) {

x.printStackTrace();

System.out.println("------------------------------------");

}

}

}

View solution in original post

1 REPLY 1
mali
7-Bedrock
(To:mali)

Ok Finally got it.

It is possible to call an PROE action from a swing GUI. Use the following code to test it.

Conclusion:

JFrame doesnt work in Synchronous J-Link application

JDialog works in Synchronous application by seeting the flag "setModal(true);"

/*

07-Feb-00 I-03-26 JCN $$1 Renamed and upgraded.

30-Jan-03 J-03-41 JCN $$2 Install test adds menu button.

*/

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JDialog;

import com.ptc.cipjava.jxthrowable;

import com.ptc.pfc.pfcCommand.DefaultUICommandActionListener;

import com.ptc.pfc.pfcCommand.UICommand;

import com.ptc.pfc.pfcGlobal.pfcGlobal;

import com.ptc.pfc.pfcModel.Model;

import com.ptc.pfc.pfcSession.Session;

/**

* This class is used to start the jlink application in proe. The name of the

* class has to appear in the protk.dat under the java_app_class option.

**/

public class JlinkSwingTest {

// =========================================================================

/**

* This method is called by proe upon starting a jlink application This

* method gets the current session from the pfcGlobal(environment) Then it

* calls the install test with the session as the argument.

**/

public static void start() {

printMsg("Started");

try {

Session curSession = pfcGlobal.GetProESession();

UICommand cmd = curSession.UICreateCommand("MyFirstApp",

new MenuButtonListener());

curSession.UIAddButton(cmd, "File", null, "MyButton", "HelpTag",

"msg_JlinkSwingTest.txt");

}

catch (jxthrowable x) {

printMsg("something wrong: " + x);

x.printStackTrace();

System.out.println("------------------------------------");

}

}

// =========================================================================

/**

* This method is used for cleanup and etc... Called when the jlink

* application exits

*/

public static void stop() {

printMsg("Stop");

}

// =========================================================================

/**

* This method prints a string to the standard output.

*/

public static void printMsg(String msg) {

System.out.println("JLINK-Testing: " + msg);

}

}

/**

* @author XXXXXX

*

*/

class MenuButtonListener extends DefaultUICommandActionListener {

public void OnCommand() {

try {

JDialog f = new JDialog();

JButton jb = new JButton("Testing1");

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

try {

Session curSession = pfcGlobal.GetProESession();

Model tryModel = curSession.CreatePart("Testing1");

tryModel.Display();

} catch (jxthrowable x) {

x.printStackTrace();

System.out

.println("------------------------------------");

}

}

});

f.add(jb);

f.pack();

f.setModal(true);

f.setVisible(true);

} catch (Exception x) {

x.printStackTrace();

System.out.println("------------------------------------");

}

}

}

Announcements


Top Tags