Start a topic
With the exception of Windchill, The PTC Community is on read-only status until April 6 in preparation for moving our community to a new platform. Learn more here
cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

The PTC Community is on temporary read only status in preparation for moving our community to a new platform. Learn more here

Translate the entire conversation 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

2 REPLIES 2
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("------------------------------------");

}

}

}

Kzal
5-Regular Member
(To:mali)

Thank you for providing the solution. However, at this moment, when this solution is applied and the JDialog is launched, the Creo interface gets stuck. Is there any good method to solve this problem?

Announcements



Top Tags