I am trying to put the imageJ window inside a desktop pane that I have created but I am having trouble doing this. How do you use imageJ2 source code in order to make a customized GUI where the imageJ window is inside the desktop pane? This is for imageJ2: https://github.com/imagej/imagej
Below is the code where I have tried making a customized GUI where it displays the image window. But it is not like the original window that is made by imageJ because it does not contain any information about the image and you can't select it. I want to make the imageJ window be inside a desktop pane but I am not able to do so.
public class CustomGui extends ImageWindow implements InternalFrameListener, ActionListener {
MyInternalFrame frame;
int openFrameCount =0;
ImagePlus img;
boolean called = false;
JMenuItem save;
String title;
final String SHOW ="show";
public CustomGui(ImagePlus imp, String title, JDesktopPane desktop, final JMenuItem save) {
super(imp);
// TODO Auto-generated constructor stub
setCall();
img = imp;
save.setEnabled(true);
//this.title = title;
FileInfo file = imp.getFileInfo();
this.save = save;
frame = new MyInternalFrame(title, img, save);
JTextField text = new JTextField(img.getHeight());
text.setVisible(true);
text.setEditable(false);;
frame.add(text);
frame.add(new JLabel(new ImageIcon(imp.getImage())));
frame.setVisible(true);
desktop.add(frame);
try {
frame.setSelected(true);
} catch (java.beans.PropertyVetoException e) {
}
frame.addInternalFrameListener(this);
// options(name, desktop);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(SHOW)) {
save.setEnabled(true);
frame.addInternalFrameListener(this);
}
System.out.println("beingg called");
}
public void setCall() {
called = true;
}
public void setCallF() {
called = false;
}
public boolean getCall() {
return called;
}
private class MyInternalFrame extends JInternalFrame {
static final int xPosition = 30, yPosition = 30;
public MyInternalFrame(String title, ImagePlus img, JMenuItem save) {
super(title, true,true, true, true);
setSize(img.getHeight(), img.getWidth());
// Set the window's location.
setLocation(xPosition * openFrameCount, yPosition * openFrameCount);
save.setEnabled(true);
}
}
@Override
public void internalFrameActivated(InternalFrameEvent arg0) {
// TODO Auto-generated method stub
setCall();
save.setEnabled(true);
System.out.println("resized");
}
@Override
public void internalFrameClosed(InternalFrameEvent arg0) {
// TODO Auto-generated method stub
setCall();
save.setEnabled(false);
System.out.println("resized");
}
@Override
public void internalFrameClosing(InternalFrameEvent arg0) {
// TODO Auto-generated method stub
setCall();
save.setEnabled(false);
System.out.println("resized");
}
@Override
public void internalFrameDeactivated(InternalFrameEvent arg0) {
// TODO Auto-generated method stub
setCall();
save.setEnabled(false);
System.out.println("resized");
}
@Override
public void internalFrameDeiconified(InternalFrameEvent arg0) {
// TODO Auto-generated method stub
setCall();
save.setEnabled(true);
System.out.println("resized");
}
@Override
public void internalFrameIconified(InternalFrameEvent arg0) {
// TODO Auto-generated method stub
setCall();
save.setEnabled(false);
System.out.println("resized");
}
@Override
public void internalFrameOpened(InternalFrameEvent arg0) {
// TODO Auto-generated method stub
//setCall();
save.setEnabled(true);
System.out.println("opened");
}
}