/** * Created : July 23, 2012 * * @author pquiring */ import java.awt.*; import javaforce.*; public class PositionProps extends javax.swing.JPanel { /** * Creates new form PositionProps */ public PositionProps(Element element) { initComponents(); img = new JFImage(); img.load(this.getClass().getClassLoader().getResourceAsStream("img200.png")); sx1.setValue(element.sx1); sy1.setValue(element.sy1); sx2.setValue(element.sx2); sy2.setValue(element.sy2); dx1.setValue(element.dx1); dy1.setValue(element.dy1); dx2.setValue(element.dx2); dy2.setValue(element.dy2); drawExample(); } /** * 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() { jPanel1 = new javax.swing.JPanel(); sy1 = new javax.swing.JSlider(); sy2 = new javax.swing.JSlider(); sx1 = new javax.swing.JSlider(); sx2 = new javax.swing.JSlider(); jPanel2 = new javax.swing.JPanel(); dx2 = new javax.swing.JSlider(); dy1 = new javax.swing.JSlider(); dy2 = new javax.swing.JSlider(); dx1 = new javax.swing.JSlider(); jPanel3 = new javax.swing.JPanel(); srcImage = new javax.swing.JLabel(); destImage = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Source")); sy1.setOrientation(javax.swing.JSlider.VERTICAL); sy1.setValue(0); sy1.setInverted(true); sy1.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { sy1StateChanged(evt); } }); sy2.setMinimum(5); sy2.setOrientation(javax.swing.JSlider.VERTICAL); sy2.setValue(100); sy2.setInverted(true); sy2.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { sy2StateChanged(evt); } }); sx1.setMaximum(95); sx1.setValue(0); sx1.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { sx1StateChanged(evt); } }); sx2.setMinimum(5); sx2.setSnapToTicks(true); sx2.setValue(100); sx2.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { sx2StateChanged(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(sy1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(sx2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(sx1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(sy2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(sy2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(sy1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addComponent(sx1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(sx2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Destination")); dx2.setMinimum(5); dx2.setValue(100); dx2.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { dx2StateChanged(evt); } }); dy1.setMaximum(95); dy1.setOrientation(javax.swing.JSlider.VERTICAL); dy1.setValue(0); dy1.setInverted(true); dy1.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { dy1StateChanged(evt); } }); dy2.setMinimum(5); dy2.setOrientation(javax.swing.JSlider.VERTICAL); dy2.setValue(100); dy2.setInverted(true); dy2.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { dy2StateChanged(evt); } }); dx1.setMaximum(95); dx1.setValue(0); dx1.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { dx1StateChanged(evt); } }); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(dy1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(dx2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(dx1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(dy2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(dy2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(dy1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(dx1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(168, 168, 168) .addComponent(dx2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Example")); srcImage.setPreferredSize(new java.awt.Dimension(200, 200)); destImage.setPreferredSize(new java.awt.Dimension(200, 200)); jLabel1.setText(">>>>>>>"); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(srcImage, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(destImage, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(destImage, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(srcImage, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(100, 100, 100) .addComponent(jLabel1))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(41, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void sx1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sx1StateChanged int sx_1 = sx1.getValue(); int sx_2 = sx2.getValue(); if (sx_1 >= sx_2-5) { sx2.setValue(sx_1 + 5); } drawExample(); }//GEN-LAST:event_sx1StateChanged private void sy1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sy1StateChanged int sy_1 = sy1.getValue(); int sy_2 = sy2.getValue(); if (sy_1 >= sy_2-5) { sy2.setValue(sy_1 + 5); } drawExample(); }//GEN-LAST:event_sy1StateChanged private void sx2StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sx2StateChanged int sx_1 = sx1.getValue(); int sx_2 = sx2.getValue(); if (sx_2 <= sx_1+5) { sx1.setValue(sx_2 - 5); } drawExample(); }//GEN-LAST:event_sx2StateChanged private void sy2StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sy2StateChanged int sy_1 = sy1.getValue(); int sy_2 = sy2.getValue(); if (sy_2 <= sy_1+5) { sy1.setValue(sy_2 - 5); } drawExample(); }//GEN-LAST:event_sy2StateChanged private void dx1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_dx1StateChanged int dx_1 = dx1.getValue(); int dx_2 = dx2.getValue(); if (dx_1 >= dx_2-5) { dx2.setValue(dx_1 + 5); } drawExample(); }//GEN-LAST:event_dx1StateChanged private void dy1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_dy1StateChanged int dy_1 = dy1.getValue(); int dy_2 = dy2.getValue(); if (dy_1 >= dy_2-5) { dy2.setValue(dy_1 + 5); } drawExample(); }//GEN-LAST:event_dy1StateChanged private void dx2StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_dx2StateChanged int dx_1 = dx1.getValue(); int dx_2 = dx2.getValue(); if (dx_2 <= dx_1+5) { dx1.setValue(dx_2 - 5); } drawExample(); }//GEN-LAST:event_dx2StateChanged private void dy2StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_dy2StateChanged int dy_1 = dy1.getValue(); int dy_2 = dy2.getValue(); if (dy_2 <= dy_1+5) { dy1.setValue(dy_2 - 5); } drawExample(); }//GEN-LAST:event_dy2StateChanged // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel destImage; private javax.swing.JSlider dx1; private javax.swing.JSlider dx2; private javax.swing.JSlider dy1; private javax.swing.JSlider dy2; private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JLabel srcImage; private javax.swing.JSlider sx1; private javax.swing.JSlider sx2; private javax.swing.JSlider sy1; private javax.swing.JSlider sy2; // End of variables declaration//GEN-END:variables private JFImage img; private void drawExample() { int sx_1 = sx1.getValue(); int sy_1 = sy1.getValue(); int sx_2 = sx2.getValue(); int sy_2 = sy2.getValue(); int dx_1 = dx1.getValue(); int dy_1 = dy1.getValue(); int dx_2 = dx2.getValue(); int dy_2 = dy2.getValue(); JFImage src = new JFImage(); src.setImageSize(200, 200); src.putJFImage(img, 0, 0); src.getGraphics().setColor(Color.BLACK); src.getGraphics().drawRect(0,0,199,199); src.getGraphics().drawRect(sx_1*2, sy_1*2, (sx_2 - sx_1)*2-1, (sy_2 - sy_1)*2-1); srcImage.setIcon(src); JFImage dest = new JFImage(); dest.setImageSize(200, 200); dest.getGraphics().drawImage(img.getImage(), dx_1*2, dy_1*2, dx_2*2, dy_2*2, sx_1*2, sy_1*2, sx_2*2, sy_2*2, null); dest.getGraphics().setColor(Color.BLACK); dest.getGraphics().drawRect(0,0,199,199); dest.getGraphics().drawRect(dx_1*2, dy_1*2, (dx_2 - dx_1)*2-1, (dy_2 - dy_1)*2-1); destImage.setIcon(dest); } public void save(Element e) { e.sx1 = sx1.getValue(); e.sy1 = sy1.getValue(); e.sx2 = sx2.getValue(); e.sy2 = sy2.getValue(); e.dx1 = dx1.getValue(); e.dy1 = dy1.getValue(); e.dx2 = dx2.getValue(); e.dy2 = dy2.getValue(); } }