toolBar = new WebToolBar ( WebToolBar.HORIZONTAL );
toolBar.setToolbarStyle ( ToolbarStyle.attached );
toolBar.setFloatable ( false );
editorPanel.add ( toolBar, BorderLayout.NORTH );
final WebButton open = new WebButton ( OPEN_ICON );
open.setLanguage ( "weblaf.ex.npeditor.openImage" );
open.addHotkey ( NinePatchEditorPanel.this, Hotkey.CTRL_O );
open.setRolloverDecoratedOnly ( true );
open.addActionListener ( new ActionListener ()
{
private WebFileChooser wfc = null;
@Override
public void actionPerformed ( final ActionEvent e )
{
if ( wfc == null )
{
wfc = new WebFileChooser ( imageSrc );
wfc.setDialogTitleKey ( "weblaf.ex.npeditor.openImage.title" );
wfc.setMultiSelectionEnabled ( false );
wfc.addChoosableFileFilter ( GlobalConstants.IMAGES_FILTER );
wfc.setFileFilter ( GlobalConstants.IMAGES_FILTER );
}
if ( imageSrc != null )
{
wfc.setSelectedFile ( imageSrc );
}
if ( wfc.showOpenDialog ( SwingUtils.getWindowAncestor ( NinePatchEditorPanel.this ) ) == WebFileChooser.APPROVE_OPTION )
{
openImage ( wfc.getSelectedFile () );
}
}
} );
toolBar.add ( open );
toolBar.addSeparator ();
save = new WebButton ( SAVE_ICON );
save.setLanguage ( "weblaf.ex.npeditor.saveImage" );
save.addHotkey ( NinePatchEditorPanel.this, Hotkey.CTRL_S );
save.setRolloverDecoratedOnly ( true );
save.setEnabled ( false );
save.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
if ( imageSrc != null )
{
try
{
saveImage ( new File ( imageSrc ) );
}
catch ( final IOException e1 )
{
Log.error ( this, e1 );
}
}
}
} );
toolBar.add ( save );
saveAs = new WebButton ( SAVE_AS_ICON );
saveAs.setLanguage ( "weblaf.ex.npeditor.saveImageAs" );
saveAs.addHotkey ( NinePatchEditorPanel.this, Hotkey.CTRL_SHIFT_S );
saveAs.setRolloverDecoratedOnly ( true );
saveAs.addActionListener ( new ActionListener ()
{
private WebFileChooser wfc = null;
@Override
public void actionPerformed ( final ActionEvent e )
{
if ( wfc == null )
{
wfc = new WebFileChooser ( imageSrc );
wfc.setDialogTitleKey ( "weblaf.ex.npeditor.saveImageAs.title" );
wfc.setMultiSelectionEnabled ( false );
}
if ( imageSrc != null )
{
wfc.setSelectedFile ( imageSrc );
}
if ( wfc.showSaveDialog ( SwingUtils.getWindowAncestor ( NinePatchEditorPanel.this ) ) == WebFileChooser.APPROVE_OPTION )
{
try
{
saveImage ( wfc.getSelectedFile () );
save.setEnabled ( true );
}
catch ( final IOException e1 )
{
Log.error ( this, e1 );
}
}
}
} );
toolBar.add ( saveAs );
toolBar.addSeparator ();
final WebButton undo = new WebButton ( UNDO_ICON );
undo.setLanguage ( "weblaf.ex.npeditor.undo" );
undo.addHotkey ( NinePatchEditorPanel.this, Hotkey.CTRL_Z );
undo.setRolloverDecoratedOnly ( true );
undo.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
ninePatchEditor.undo ();
}
} );
toolBar.add ( undo );
final WebButton redo = new WebButton ( REDO_ICON );
redo.setLanguage ( "weblaf.ex.npeditor.redo" );
redo.addHotkey ( NinePatchEditorPanel.this, Hotkey.CTRL_R ).setHidden ( true );
redo.addHotkey ( NinePatchEditorPanel.this, Hotkey.CTRL_SHIFT_Z );
redo.setRolloverDecoratedOnly ( true );
redo.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
ninePatchEditor.redo ();
}
} );
toolBar.add ( redo );
//
ninePatchEditor = new NinePatchEditor ();
ninePatchEditor.setTransferHandler ( new FileDragAndDropHandler ()
{
@Override
public boolean filesDropped ( final List<File> files )
{
if ( files != null )
{
for ( final File file : files )
{
if ( ImageUtils.isImageLoadable ( file.getName () ) )
{
openImage ( file );
return true;
}
}
}
return false;
}
} );
editorPanel.add ( ninePatchEditor.getView (), BorderLayout.CENTER );
final WebButton copy = new WebButton ( COPY_ICON );
copy.setLanguage ( "weblaf.ex.npeditor.copyInfo" );
copy.addHotkey ( NinePatchEditorPanel.this, Hotkey.CTRL_C );
copy.setRolloverDecoratedOnly ( true );
copy.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
if ( !ninePatchEditor.isSomeDragged () )
{
SystemUtils.copyToClipboard ( XmlUtils.toXML ( ninePatchEditor.getNinePatchInfo () ) );
}
}
} );
toolBar.addToEnd ( copy );
final WebButton paste = new WebButton ( PASTE_ICON );
paste.setLanguage ( "weblaf.ex.npeditor.pasteInfo" );
paste.addHotkey ( NinePatchEditorPanel.this, Hotkey.CTRL_V );
paste.setRolloverDecoratedOnly ( true );
paste.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
if ( !ninePatchEditor.isSomeDragged () )
{
final String xml = SystemUtils.getStringFromClipboard ();
if ( xml != null )
{
// Retrieving data from xml
final NinePatchInfo info = XmlUtils.fromXML ( xml );
// Restoring data if it fits size
ninePatchEditor.setNinePatchInfo ( info );
}
}
}
} );
toolBar.addToEnd ( paste );
toolBar.addSeparatorToEnd ();
final WebButton rotateCCW = new WebButton ( ROTATE_CCW_ICON );
rotateCCW.setLanguage ( "weblaf.ex.npeditor.rotateCCW" );
rotateCCW.setRolloverDecoratedOnly ( true );
rotateCCW.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
if ( !ninePatchEditor.isSomeDragged () )
{
// Replacing icon
ninePatchEditor.setNinePatchIcon ( NinePatchUtils.rotateIcon90CCW ( ninePatchEditor.getNinePatchIcon () ) );
}
}
} );
toolBar.addToEnd ( rotateCCW );
final WebButton rotateCW = new WebButton ( ROTATE_CW_ICON );
rotateCW.setLanguage ( "weblaf.ex.npeditor.rotateCW" );
rotateCW.setRolloverDecoratedOnly ( true );
rotateCW.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
if ( !ninePatchEditor.isSomeDragged () )
{
// Replacing icon
ninePatchEditor.setNinePatchIcon ( NinePatchUtils.rotateIcon90CW ( ninePatchEditor.getNinePatchIcon () ) );
}
}
} );
toolBar.addToEnd ( rotateCW );
final WebButton rotate180 = new WebButton ( ROTATE_180_ICON );
rotate180.setLanguage ( "weblaf.ex.npeditor.rotate180" );
rotate180.setRolloverDecoratedOnly ( true );
rotate180.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
if ( !ninePatchEditor.isSomeDragged () )
{
// Replacing icon
ninePatchEditor.setNinePatchIcon ( NinePatchUtils.rotateIcon180 ( ninePatchEditor.getNinePatchIcon () ) );
}
}
} );
toolBar.addToEnd ( rotate180 );
//
final WebStatusBar bottomToolBar = new WebStatusBar ();
editorPanel.add ( bottomToolBar, BorderLayout.SOUTH );
final boolean sgs = SettingsManager.get ( "NinePatchEditor", "showSpacing", true );
final WebToggleButton showGuidesSpacing = new WebToggleButton ( GUIDES_ICON );
showGuidesSpacing.setLanguage ( "weblaf.ex.npeditor.showSpacing" );
showGuidesSpacing.setRolloverDecoratedOnly ( true );
showGuidesSpacing.setSelected ( sgs );
ninePatchEditor.setShowGuideSpacing ( sgs );
showGuidesSpacing.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
final boolean sgs = showGuidesSpacing.isSelected ();
SettingsManager.set ( "NinePatchEditor", "showSpacing", sgs );
ninePatchEditor.setShowGuideSpacing ( sgs );
}
} );
final boolean sr = SettingsManager.get ( "NinePatchEditor", "showRuler", true );
final WebToggleButton showRuler = new WebToggleButton ( RULER_ICON );
showRuler.setLanguage ( "weblaf.ex.npeditor.showRuler" );
showRuler.setRolloverDecoratedOnly ( true );
showRuler.setSelected ( sr );
ninePatchEditor.setShowRuler ( sr );
showRuler.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
final boolean sr = showRuler.isSelected ();
SettingsManager.set ( "NinePatchEditor", "showRuler", sr );
ninePatchEditor.setShowRuler ( sr );
}
} );
final boolean fc = SettingsManager.get ( "NinePatchEditor", "fillContent", true );
final WebToggleButton fillContent = new WebToggleButton ( CONTENT_ICON );
fillContent.setLanguage ( "weblaf.ex.npeditor.fillContent" );
fillContent.setRolloverDecoratedOnly ( true );
fillContent.setSelected ( fc );
ninePatchEditor.setFillContentArea ( fc );
fillContent.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
final boolean fc = fillContent.isSelected ();
SettingsManager.set ( "NinePatchEditor", "fillContent", fc );
ninePatchEditor.setFillContentArea ( fc );
}
} );
final boolean fs = SettingsManager.get ( "NinePatchEditor", "fillStretch", true );
final WebToggleButton fillStretch = new WebToggleButton ( STRETCH_ICON );
fillStretch.setLanguage ( "weblaf.ex.npeditor.fillStretch" );
fillStretch.setRolloverDecoratedOnly ( true );
fillStretch.setSelected ( fs );
ninePatchEditor.setFillStretchAreas ( fs );
fillStretch.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
final boolean fs = fillStretch.isSelected ();
SettingsManager.set ( "NinePatchEditor", "fillStretch", fs );
ninePatchEditor.setFillStretchAreas ( fs );
}
} );
final boolean rc = SettingsManager.get ( "NinePatchEditor", "rulerCursor", true );
final WebToggleButton rulerCursor = new WebToggleButton ( RULER_CURSOR_ICON );
rulerCursor.setLanguage ( "weblaf.ex.npeditor.rulerCursor" );
rulerCursor.setRolloverDecoratedOnly ( true );
rulerCursor.setSelected ( rc );
ninePatchEditor.setShowRulerCursorPosition ( rc );
rulerCursor.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
final boolean rc = rulerCursor.isSelected ();
SettingsManager.set ( "NinePatchEditor", "rulerCursor", rc );
ninePatchEditor.setShowRulerCursorPosition ( rc );
}
} );
final boolean ac = SettingsManager.get ( "NinePatchEditor", "areaCursor", false );
final WebToggleButton areaCursor = new WebToggleButton ( AREA_CURSOR_ICON );
areaCursor.setLanguage ( "weblaf.ex.npeditor.areaCursor" );
areaCursor.setRolloverDecoratedOnly ( true );
areaCursor.setSelected ( ac );
ninePatchEditor.setShowAreaCursorPosition ( ac );
areaCursor.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
final boolean ac = areaCursor.isSelected ();
SettingsManager.set ( "NinePatchEditor", "areaCursor", ac );
ninePatchEditor.setShowAreaCursorPosition ( ac );
}
} );
final WebSlider zoomSlider = new WebSlider ( NinePatchEditor.MIN_ZOOM, NinePatchEditor.MAX_ZOOM, ninePatchEditor.getZoom () );
zoomSlider.setPreferredWidth ( 170 );
zoomSlider.setAngledThumb ( false );
zoomSlider.setPaintTicks ( false );
zoomSlider.setPaintLabels ( false );
changeListener = new ChangeListener ()
{
@Override
public void stateChanged ( final ChangeEvent e )
{
ninePatchEditor.removeZoomChangeListener ( zoomChangeListener );
ninePatchEditor.setZoom ( zoomSlider.getValue () );
ninePatchEditor.addZoomChangeListener ( zoomChangeListener );
}
};
zoomSlider.addChangeListener ( changeListener );
zoomChangeListener = new ZoomChangeListener ()
{
@Override
public void zoomChanged ()
{
zoomSlider.removeChangeListener ( changeListener );
zoomSlider.setValue ( ninePatchEditor.getZoom () );
zoomSlider.addChangeListener ( changeListener );
}
};
ninePatchEditor.addZoomChangeListener ( zoomChangeListener );
final WebButton minZoom = new WebButton ( MIN_ICON );
minZoom.setRolloverDecoratedOnly ( true );
minZoom.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
zoomSlider.setValue ( NinePatchEditor.MIN_ZOOM );
}
} );
final WebButton maxZoom = new WebButton ( MAX_ICON );
maxZoom.setRolloverDecoratedOnly ( true );
maxZoom.addActionListener ( new ActionListener ()
{
@Override
public void actionPerformed ( final ActionEvent e )
{
zoomSlider.setValue ( NinePatchEditor.MAX_ZOOM );