/*
* ViewOptionPane.java - Editor window options
* :tabSize=4:indentSize=4:noTabs=false:
* :folding=explicit:collapseFolds=1:
*
* Copyright (C) 2003 Slava Pestov
* Portions Copyright (C) 2009 Matthieu Casanova
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.gjt.sp.jedit.options;
//{{{ Imports
import javax.swing.border.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import org.gjt.sp.jedit.*;
import org.gjt.sp.jedit.bufferset.BufferSet;
import org.gjt.sp.util.Log;
//}}}
public class ViewOptionPane extends AbstractOptionPane
{
//{{{ ViewOptionPane constructor
public ViewOptionPane()
{
super("view");
} //}}}
//{{{ _init() method
@Override
protected void _init()
{
/* View dock layout */
layoutIcon1 = GUIUtilities.loadIcon("dock_layout1.png");
layoutIcon2 = GUIUtilities.loadIcon("dock_layout2.png");
layoutIcon3 = GUIUtilities.loadIcon("dock_layout3.png");
layoutIcon4 = GUIUtilities.loadIcon("dock_layout4.png");
JPanel layoutPanel = new JPanel(new BorderLayout(12,12));
if(jEdit.getBooleanProperty("view.docking.alternateLayout"))
{
layout = new JLabel(jEdit.getBooleanProperty(
"view.toolbar.alternateLayout")
? layoutIcon4 : layoutIcon2);
}
else
{
layout = new JLabel(jEdit.getBooleanProperty(
"view.toolbar.alternateLayout")
? layoutIcon3 : layoutIcon1);
}
layout.setBorder(new EmptyBorder(12,12,12,12));
layoutPanel.add(BorderLayout.CENTER,layout);
JPanel buttons = new JPanel(new GridLayout(2,1,12,12));
buttons.setBorder(new EmptyBorder(0,12,12,12));
buttons.add(alternateDockingLayout = new JButton(jEdit.getProperty(
"options.view.alternateDockingLayout")));
ActionHandler actionHandler = new ActionHandler();
alternateDockingLayout.addActionListener(actionHandler);
buttons.add(alternateToolBarLayout = new JButton(jEdit.getProperty(
"options.view.alternateToolBarLayout")));
alternateToolBarLayout.addActionListener(actionHandler);
layoutPanel.add(BorderLayout.SOUTH,buttons);
TitledBorder border = new TitledBorder(jEdit.getProperty(
"options.view.viewLayout"));
border.setTitleJustification(TitledBorder.CENTER);
layoutPanel.setBorder(border);
addComponent(layoutPanel);
/* Floatable Toolbars */
floatableToolbars = new JCheckBox(jEdit.getProperty(
"options.view.floatableToolbars"));
floatableToolbars.setSelected(jEdit.getBooleanProperty(
"view.toolbar.floatable"));
addComponent(floatableToolbars);
/* Abbreviate pathnames when possible */
abbreviatePaths = new JCheckBox(jEdit.getProperty(
"options.view.abbreviatePaths"));
abbreviatePaths.setSelected(jEdit.getBooleanProperty(
"view.abbreviatePaths"));
addComponent(abbreviatePaths);
/* Show full path */
showFullPath = new JCheckBox(jEdit.getProperty(
"options.view.showFullPath"));
showFullPath.setSelected(jEdit.getBooleanProperty(
"view.showFullPath"));
addComponent(showFullPath);
/* Show search bar */
showSearchbar = new JCheckBox(jEdit.getProperty(
"options.view.showSearchbar"));
showSearchbar.setSelected(jEdit.getBooleanProperty(
"view.showSearchbar"));
addComponent(showSearchbar);
/* Beep on search auto wrap */
beepOnSearchAutoWrap = new JCheckBox(jEdit.getProperty(
"options.view.beepOnSearchAutoWrap"));
beepOnSearchAutoWrap.setSelected(jEdit.getBooleanProperty(
"search.beepOnSearchAutoWrap"));
addComponent(beepOnSearchAutoWrap);
/* Show buffer switcher */
addSeparator();
showBufferSwitcher = new JCheckBox(jEdit.getProperty(
"options.view.showBufferSwitcher"));
showBufferSwitcher.setSelected(jEdit.getBooleanProperty(
"view.showBufferSwitcher"));
addComponent(showBufferSwitcher);
showBufferSwitcher.addActionListener(actionHandler);
/* Sort buffer switcher */
sortBufferSwitcher = new JCheckBox(jEdit.getProperty(
"options.view.bufferswitcher.sortBuffers"));
sortBufferSwitcher.setSelected(jEdit.getBooleanProperty("bufferswitcher.sortBuffers", true));
sortBufferSwitcher.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
sortBufferSwitcherByName.setEnabled(sortBufferSwitcher.isSelected());
}
});
addComponent(sortBufferSwitcher);
/* Sort buffer switcher by names */
sortBufferSwitcherByName = new JCheckBox(jEdit.getProperty(
"options.view.bufferswitcher.sortByName"));
sortBufferSwitcherByName.setSelected(jEdit.getBooleanProperty("bufferswitcher.sortByName", true));
sortBufferSwitcherByName.setEnabled(sortBufferSwitcher.isSelected());
addComponent(sortBufferSwitcherByName);
/* Buffer switcher max row count */
bufferSwitcherMaxRowCount = new JTextField(jEdit.getProperty("bufferSwitcher.maxRowCount"));
addComponent(jEdit.getProperty("options.view.bufferSwitcherMaxRowsCount"),
bufferSwitcherMaxRowCount);
bufferSwitcherMaxRowCount.setEditable(showBufferSwitcher.isSelected());
// Buffer set settings
addSeparator();
buffersetScope = new JComboBox<BufferSet.Scope>();
buffersetScope.addItem(BufferSet.Scope.global);
buffersetScope.addItem(BufferSet.Scope.view);
buffersetScope.addItem(BufferSet.Scope.editpane);
BufferSet.Scope scope;
try
{
scope = BufferSet.Scope.valueOf(jEdit.getProperty("bufferset.scope", "global"));
}
catch (IllegalArgumentException e)
{
Log.log(Log.ERROR, this, e);
scope = BufferSet.Scope.global;
}
buffersetScope.setSelectedItem(scope);
addComponent(jEdit.getProperty("options.bufferset.scope"), buffersetScope);
/* Sort buffers */
sortBuffers = new JCheckBox(jEdit.getProperty(
"options.view.sortBuffers"));
sortBuffers.setSelected(jEdit.getBooleanProperty("sortBuffers"));
sortBuffers.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if (sortBuffers.isSelected())
{
sortByName.setEnabled(true);
sortBufferSwitcher.setEnabled(false);
sortBufferSwitcher.setSelected(true);
sortBufferSwitcherByName.setEnabled(false);
}
else
{
sortByName.setEnabled(false);
sortBufferSwitcher.setEnabled(true);
sortBufferSwitcherByName.setEnabled(true);
}
}
});
addComponent(sortBuffers);
/* Sort buffers by names */
sortByName = new JCheckBox(jEdit.getProperty(
"options.view.sortByName"));
sortByName.setSelected(jEdit.getBooleanProperty("sortByName"));
sortByName.setEnabled(sortBuffers.isSelected());
addComponent(sortByName);
addSeparator();
fullScreenIncludesMenu = new JCheckBox(jEdit.getProperty(
"options.view.fullScreenIncludesMenu"));
fullScreenIncludesMenu.setSelected(
jEdit.getBooleanProperty("fullScreenIncludesMenu"));
addComponent(fullScreenIncludesMenu);
fullScreenIncludesToolbar = new JCheckBox(jEdit.getProperty(
"options.view.fullScreenIncludesToolbar"));
fullScreenIncludesToolbar.setSelected(
jEdit.getBooleanProperty("fullScreenIncludesToolbar"));
addComponent(fullScreenIncludesToolbar);
fullScreenIncludesStatus = new JCheckBox(jEdit.getProperty(
"options.view.fullScreenIncludesStatus"));
fullScreenIncludesStatus.setSelected(
jEdit.getBooleanProperty("fullScreenIncludesStatus"));
addComponent(fullScreenIncludesStatus);
} //}}}
//{{{ _save() method
@Override
protected void _save()
{
jEdit.setBooleanProperty("view.docking.alternateLayout",
layout.getIcon() == layoutIcon2
|| layout.getIcon() == layoutIcon4);
jEdit.setBooleanProperty("view.toolbar.alternateLayout",
layout.getIcon() == layoutIcon3
|| layout.getIcon() == layoutIcon4);
jEdit.setBooleanProperty("view.abbreviatePaths",abbreviatePaths.isSelected());
jEdit.setBooleanProperty("view.showFullPath",showFullPath.isSelected());
jEdit.setBooleanProperty("view.toolbar.floatable", floatableToolbars.isSelected());
jEdit.setBooleanProperty("view.showSearchbar",showSearchbar
.isSelected());
jEdit.setBooleanProperty("search.beepOnSearchAutoWrap",beepOnSearchAutoWrap
.isSelected());
jEdit.setBooleanProperty("view.showBufferSwitcher",
showBufferSwitcher.isSelected());
jEdit.setBooleanProperty("bufferswitcher.sortBuffers", sortBufferSwitcher.isSelected());
jEdit.setBooleanProperty("bufferswitcher.sortByName", sortBufferSwitcherByName.isSelected());
jEdit.setProperty("bufferSwitcher.maxRowCount",
bufferSwitcherMaxRowCount.getText());
jEdit.setProperty("bufferset.scope", buffersetScope.getSelectedItem().toString());
jEdit.setBooleanProperty("sortBuffers",sortBuffers.isSelected());
jEdit.setBooleanProperty("sortByName",sortByName.isSelected());
jEdit.setBooleanProperty("fullScreenIncludesMenu",fullScreenIncludesMenu.isSelected());
jEdit.setBooleanProperty("fullScreenIncludesToolbar",fullScreenIncludesToolbar.isSelected());
jEdit.setBooleanProperty("fullScreenIncludesStatus",fullScreenIncludesStatus.isSelected());
} //}}}
//{{{ Private members
private JLabel layout;
private Icon layoutIcon1, layoutIcon2, layoutIcon3, layoutIcon4;
private JButton alternateDockingLayout, alternateToolBarLayout;
private JCheckBox abbreviatePaths;
private JCheckBox showFullPath;
private JCheckBox floatableToolbars;
private JCheckBox showSearchbar;
private JCheckBox beepOnSearchAutoWrap;
private JCheckBox showBufferSwitcher;
private JTextField bufferSwitcherMaxRowCount;
private JComboBox<BufferSet.Scope> buffersetScope;
private JCheckBox sortBuffers;
private JCheckBox sortByName;
private JCheckBox fullScreenIncludesMenu;
private JCheckBox fullScreenIncludesToolbar;
private JCheckBox fullScreenIncludesStatus;
private JCheckBox sortBufferSwitcher;
private JCheckBox sortBufferSwitcherByName;
//}}}
//{{{ ActionHandler class
private class ActionHandler implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == alternateDockingLayout)
{
if(layout.getIcon() == layoutIcon1)
layout.setIcon(layoutIcon2);
else if(layout.getIcon() == layoutIcon2)
layout.setIcon(layoutIcon1);
else if(layout.getIcon() == layoutIcon3)
layout.setIcon(layoutIcon4);
else if(layout.getIcon() == layoutIcon4)
layout.setIcon(layoutIcon3);
}
else if(evt.getSource() == alternateToolBarLayout)
{
if(layout.getIcon() == layoutIcon1)
layout.setIcon(layoutIcon3);
else if(layout.getIcon() == layoutIcon3)
layout.setIcon(layoutIcon1);
else if(layout.getIcon() == layoutIcon2)
layout.setIcon(layoutIcon4);
else if(layout.getIcon() == layoutIcon4)
layout.setIcon(layoutIcon2);
}
else if (evt.getSource() == showBufferSwitcher)
{
bufferSwitcherMaxRowCount.setEditable(showBufferSwitcher.isSelected());
}
}
} //}}}
}