package com.yoursway.modelediting.swt.demo;
import com.yoursway.modelediting.AbstractModel;
import com.yoursway.modelediting.Fragment;
import com.yoursway.modelediting.IModelListener;
import com.yoursway.modelediting.ReplaceImpossibleException;
public class TextFormModel extends AbstractModel {
public boolean canReplace(Fragment fragment, int startOffset, int length) {
if (fragment == null)
throw new NullPointerException("fragment is null");
String fragmentText = fragment.toString();
if (startOffset < 0 || length < 0 || startOffset + length > fragmentText.length())
return false;
return fragment.canReplace(startOffset, length);
}
public void replace(Object sender, Fragment fragment, int startOffset, int length, String text)
throws ReplaceImpossibleException {
if (fragment == null)
throw new NullPointerException("fragment is null");
if (text == null)
throw new NullPointerException("text is null");
if (!canReplace(fragment, startOffset, length))
throw new ReplaceImpossibleException();
fragment.replace(startOffset, length, text);
for (IModelListener listener : listeners)
listener.modelChanged(sender, this, fragments.indexOf(fragment), 1, 1);
}
}