/**
* Created : July 10, 2012
*
* @author pquiring
*/
import java.awt.*;
import java.io.*;
import javax.swing.*;
import javaforce.*;
import javaforce.linux.*;
import jffile.*;
public class Desktop extends javax.swing.JWindow {
/**
* Creates new form Desktop
*/
public Desktop() {
try {
initComponents();
setPosition();
desktop = this;
showIcons.setSelected(Dock.dock.config.showIcons);
arrangeAuto.setSelected(Dock.dock.config.arrangeIconsAuto);
browser = new JFileBrowser(JFileBrowser.VIEW_ICONS, JF.getUserPath() + "/Desktop"
, DesktopMenu, IconMenu, Dock.dock.config.desktopFile, Dock.dock.config.desktopMode
, true, "jfile", "jopen", Dock.dock.config.bc, Dock.dock.config.fc
, false, true, false, Dock.dock.config.arrangeIconsAuto, Dock.jbusClient, true, Dock.dock);
setContentPane(browser);
browser.refresh();
if (!new File(JF.getUserPath() + "/Desktop/Home.desktop").exists()) {
browser.createIcon("Home", "jfile " + JF.getUserPath(), "jfdesktop-home", JF.getUserPath() + "/Desktop/Home.desktop", true);
}
x11id = Linux.x11_get_id(this);
JFLog.log("Desktop.window=0x" + Long.toString(x11id, 16));
try {
Linux.x11_set_desktop(x11id);
} catch (Throwable t) {
JFLog.log(t);
}
if (!Dock.dock.config.showIcons) {
newShortcut.setEnabled(false);
newFolder.setEnabled(false);
browser.setIconsVisible(false);
}
try {
Linux.x11_set_desktop(x11id);
} catch (Throwable t) {
JFLog.log(t);
}
JFLog.log("Desktop init complete");
} catch (Exception e) {
JFLog.log(e);
}
ready = true;
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
IconMenu = new javax.swing.JPopupMenu();
open = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JPopupMenu.Separator();
delete = new javax.swing.JMenuItem();
jSeparator2 = new javax.swing.JPopupMenu.Separator();
props = new javax.swing.JMenuItem();
DesktopMenu = new javax.swing.JPopupMenu();
arrange = new javax.swing.JMenu();
arrangeByName = new javax.swing.JMenuItem();
arrangeAuto = new javax.swing.JCheckBoxMenuItem();
showIcons = new javax.swing.JCheckBoxMenuItem();
newMenu = new javax.swing.JMenu();
newShortcut = new javax.swing.JMenuItem();
newFolder = new javax.swing.JMenuItem();
desktopResolution = new javax.swing.JMenuItem();
desktopProps = new javax.swing.JMenuItem();
open.setText("Open");
open.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
openActionPerformed(evt);
}
});
IconMenu.add(open);
IconMenu.add(jSeparator1);
delete.setText("Delete");
delete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deleteActionPerformed(evt);
}
});
IconMenu.add(delete);
IconMenu.add(jSeparator2);
props.setText("Properties");
props.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
propsActionPerformed(evt);
}
});
IconMenu.add(props);
arrange.setText("Arrange...");
arrangeByName.setText("By Name");
arrangeByName.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
arrangeByNameActionPerformed(evt);
}
});
arrange.add(arrangeByName);
arrangeAuto.setSelected(true);
arrangeAuto.setText("Auto");
arrangeAuto.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
arrangeAutoActionPerformed(evt);
}
});
arrange.add(arrangeAuto);
showIcons.setSelected(true);
showIcons.setText("Show Icons");
showIcons.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
showIconsActionPerformed(evt);
}
});
arrange.add(showIcons);
DesktopMenu.add(arrange);
newMenu.setText("New...");
newShortcut.setText("Shortcut");
newShortcut.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
newShortcutActionPerformed(evt);
}
});
newMenu.add(newShortcut);
newFolder.setText("Folder");
newFolder.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
newFolderActionPerformed(evt);
}
});
newMenu.add(newFolder);
DesktopMenu.add(newMenu);
desktopResolution.setText("Resolution");
desktopResolution.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
desktopResolutionActionPerformed(evt);
}
});
DesktopMenu.add(desktopResolution);
desktopProps.setText("Properties");
desktopProps.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
desktopPropsActionPerformed(evt);
}
});
DesktopMenu.add(desktopProps);
setIconImage(null);
setName("desktop"); // NOI18N
addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
formMouseClicked(evt);
}
});
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
formComponentShown(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseClicked
try {
x11_set_desktop();
} catch (Throwable t) {
JFLog.log(t);
}
}//GEN-LAST:event_formMouseClicked
private void propsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_propsActionPerformed
JMenuItem mi = (JMenuItem)evt.getSource();
JPopupMenu pm = (JPopupMenu)mi.getParent();
JFileIcon button = (JFileIcon)pm.getInvoker();
FileEntry entry = button.entry;
JFileProperties dialog = new JFileProperties(entry, false);
dialog.setVisible(true);
}//GEN-LAST:event_propsActionPerformed
private void openActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openActionPerformed
try {
JMenuItem mi = (JMenuItem)evt.getSource();
JPopupMenu pm = (JPopupMenu)mi.getParent();
browser.invoke((JFileIcon)pm.getInvoker());
} catch (Exception e) {
JFLog.log(e);
}
}//GEN-LAST:event_openActionPerformed
private void desktopPropsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_desktopPropsActionPerformed
Dock.dock.showConfig();
}//GEN-LAST:event_desktopPropsActionPerformed
private void newShortcutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newShortcutActionPerformed
int i = 0;
String name;
String fn;
do {
name = "New Shortcut" + (i == 0 ? "" : " (" + i + ")");
fn = JF.getUserPath() + "/Desktop/" + name + ".desktop";
i++;
} while (new File(fn).exists());
try {
FileEntry entry = browser.createIcon(name, "", "jfile-file", fn, false);
JFileProperties dialog = new JFileProperties(entry, true);
dialog.setVisible(true);
} catch (Exception e) {
JFLog.log(e);
}
}//GEN-LAST:event_newShortcutActionPerformed
private void newFolderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newFolderActionPerformed
try {
String fn = JF.getString("Enter Folder Name", "");
if (fn == null) return;
String full = JF.getUserPath() + "/Desktop/" + fn;
new File(full).mkdir();
} catch (Exception e) {
JFLog.log(e);
}
}//GEN-LAST:event_newFolderActionPerformed
private void deleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteActionPerformed
if (!JF.showConfirm("Confirm", "Delete?")) return;
try {
JMenuItem mi = (JMenuItem)evt.getSource();
JPopupMenu pm = (JPopupMenu)mi.getParent();
JFileIcon button = (JFileIcon)pm.getInvoker();
FileEntry entry = button.entry;
browser.deleteFile(entry.file);
} catch (Exception e) {
JFLog.log(e);
}
}//GEN-LAST:event_deleteActionPerformed
private void arrangeByNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_arrangeByNameActionPerformed
browser.arrangeByName();
}//GEN-LAST:event_arrangeByNameActionPerformed
private void arrangeAutoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_arrangeAutoActionPerformed
if (!ready) return;
Dock.dock.config.arrangeIconsAuto = arrangeAuto.isSelected();
Dock.dock.saveConfig();
if (Dock.dock.config.arrangeIconsAuto) browser.arrangeByGrid();
browser.setAutoArrange(Dock.dock.config.arrangeIconsAuto);
}//GEN-LAST:event_arrangeAutoActionPerformed
private void showIconsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showIconsActionPerformed
if (!ready) return;
boolean state = showIcons.isSelected();
if (state) {
newShortcut.setEnabled(true);
newFolder.setEnabled(true);
} else {
newShortcut.setEnabled(false);
newFolder.setEnabled(false);
}
Dock.dock.config.showIcons = state;
Dock.dock.saveConfig();
browser.setIconsVisible(showIcons.isSelected());
}//GEN-LAST:event_showIconsActionPerformed
private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
//layout will be complete - safe to let file browser start
try {
browser.refresh();
if (Dock.dock.config.arrangeIconsAuto) browser.arrangeByGrid();
} catch (Exception e) {
JFLog.log(e);
}
}//GEN-LAST:event_formComponentShown
private void desktopResolutionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_desktopResolutionActionPerformed
try {
Runtime.getRuntime().exec(new String[] {"jconfig", "display"});
} catch (Exception e) {
JFLog.log(e);
}
}//GEN-LAST:event_desktopResolutionActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPopupMenu DesktopMenu;
private javax.swing.JPopupMenu IconMenu;
private javax.swing.JMenu arrange;
private javax.swing.JCheckBoxMenuItem arrangeAuto;
private javax.swing.JMenuItem arrangeByName;
private javax.swing.JMenuItem delete;
private javax.swing.JMenuItem desktopProps;
private javax.swing.JMenuItem desktopResolution;
private javax.swing.JPopupMenu.Separator jSeparator1;
private javax.swing.JPopupMenu.Separator jSeparator2;
private javax.swing.JMenuItem newFolder;
private javax.swing.JMenu newMenu;
private javax.swing.JMenuItem newShortcut;
private javax.swing.JMenuItem open;
private javax.swing.JMenuItem props;
private javax.swing.JCheckBoxMenuItem showIcons;
// End of variables declaration//GEN-END:variables
public static Desktop desktop;
public JFileBrowser browser;
public JFImage wallPaper;
public long x11id;
private int sx, sy; //screen size
private int mx, my; //mouse x/y on screen
private boolean ready = false;
public void setPosition() {
Rectangle s = JF.getMaximumBounds();
sx = s.width;
sy = s.height;
setLocation(0, 0);
setSize(sx, sy);
revalidate();
repaint();
}
public void x11_set_desktop() {
try {
Linux.x11_set_desktop(x11id);
} catch (Throwable t) {
JFLog.log(t);
}
}
}