/*
JMeld is a visual diff and merge tool.
Copyright (C) 2007 Kees Kuip
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301 USA
*/
package org.jmeld.ui;
import org.jmeld.ui.search.SearchHits;
import org.jmeld.util.ObjectUtil;
import javax.swing.*;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.CompoundEdit;
import javax.swing.undo.UndoManager;
import javax.swing.undo.UndoableEdit;
public class AbstractContentPanel
extends JPanel
implements JMeldContentPanelIF
{
private MyUndoManager undoManager = new MyUndoManager();
private String id;
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return id;
}
public boolean isSaveEnabled()
{
return false;
}
public void doSave()
{
}
public boolean checkSave()
{
return true;
}
public boolean isUndoEnabled()
{
return getUndoHandler().canUndo();
}
public void doUndo()
{
try
{
if (getUndoHandler().canUndo())
{
getUndoHandler().undo();
}
}
catch (CannotUndoException ex)
{
System.out.println("Unable to undo: " + ex);
ex.printStackTrace();
}
}
public boolean isRedoEnabled()
{
return getUndoHandler().canRedo();
}
public void doRedo()
{
try
{
if (getUndoHandler().canRedo())
{
getUndoHandler().redo();
}
}
catch (CannotUndoException ex)
{
System.out.println("Unable to undo: " + ex);
ex.printStackTrace();
}
}
public void doLeft(boolean shift)
{
}
public void doRight(boolean shift)
{
}
public void doUp()
{
}
public void doDown()
{
}
public void doZoom(boolean direction)
{
}
public void doGoToSelected()
{
}
public void doGoToFirst()
{
}
public void doGoToLast()
{
}
public void doGoToLine(int line)
{
}
public void doStopSearch()
{
}
public SearchHits doSearch()
{
return null;
}
public void doNextSearch()
{
}
public void doPreviousSearch()
{
}
public void doRefresh()
{
}
public void doMergeMode(boolean mergeMode)
{
}
public boolean checkExit()
{
return true;
}
public class MyUndoManager
extends UndoManager
implements UndoableEditListener
{
CompoundEdit activeEdit;
private MyUndoManager()
{
}
public void start(String text)
{
activeEdit = new CompoundEdit();
}
public void add(UndoableEdit edit)
{
addEdit(edit);
}
public void end(String text)
{
activeEdit.end();
addEdit(activeEdit);
activeEdit = null;
checkActions();
}
@Override
public void undoableEditHappened(UndoableEditEvent e)
{
if (activeEdit != null)
{
activeEdit.addEdit(e.getEdit());
return;
}
addEdit(e.getEdit());
checkActions();
}
}
public MyUndoManager getUndoHandler()
{
return undoManager;
}
public void checkActions()
{
}
public String getSelectedText()
{
return null;
}
public boolean equals(Object o)
{
if (!(o instanceof AbstractContentPanel))
{
return false;
}
return ObjectUtil.equals(((AbstractContentPanel) o).getId(), id);
}
}