Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.custom.StyleRange;

import uk.ac.stfc.isis.ibex.ui.widgets.buttons.IBEXButton;

Expand All @@ -42,11 +45,14 @@
public class BlockDetailsPanel extends Composite {

private final Text name;
private final Text pvAddress;
private final StyledText pvAddress;
private final Button visible;
private final Button local;
private final Button btnPickPV;

private final Color prefixColor = new Color(getDisplay(), 166,28,0);
private final Color prefixHighlight = new Color(getDisplay(), 244, 204, 204);

/**
* Standard constructor.
*
Expand Down Expand Up @@ -85,10 +91,13 @@ public BlockDetailsPanel(Composite parent, int style, final BlockDetailsViewMode
lblPvAddress.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
lblPvAddress.setText("PV address:");

pvAddress = new Text(grpBlock, SWT.BORDER);
pvAddress = new StyledText(grpBlock, SWT.BORDER);
GridData gdPvAddress = new GridData(SWT.CENTER, SWT.CENTER, true, false, 2, 1);
gdPvAddress.minimumWidth = 380;
pvAddress.setLayoutData(gdPvAddress);
pvAddress.addExtendedModifyListener(e->updateStyle(viewModel.getPrefix()));



btnPickPV = new IBEXButton(grpBlock, SWT.NONE, _ -> viewModel.openPvDialog())
.layoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1))
Expand All @@ -98,6 +107,21 @@ public BlockDetailsPanel(Composite parent, int style, final BlockDetailsViewMode
setModel(viewModel);
}



private void updateStyle(String prefix) {
StyleRange prefixStyle = new StyleRange();
prefixStyle.start = 0;
prefixStyle.length = prefix.length();
prefixStyle.foreground = prefixColor;
prefixStyle.fontStyle = SWT.ITALIC;
prefixStyle.background = prefixHighlight;
if (pvAddress.getText().startsWith(prefix)){
pvAddress.setStyleRange(prefixStyle);
}
}


private void setModel(BlockDetailsViewModel viewModel) {
DataBindingContext bindingContext = new DataBindingContext();

Expand All @@ -122,4 +146,5 @@ private void setModel(BlockDetailsViewModel viewModel) {
BeanProperties.value("visible").observe(viewModel));

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import uk.ac.stfc.isis.ibex.configserver.editing.BlockNameValidator;
import uk.ac.stfc.isis.ibex.configserver.editing.EditableBlock;
import uk.ac.stfc.isis.ibex.configserver.editing.EditableConfiguration;
import uk.ac.stfc.isis.ibex.instrument.Instrument;
import uk.ac.stfc.isis.ibex.ui.configserver.dialogs.PvSelectorDialog;
import uk.ac.stfc.isis.ibex.validators.ErrorMessageProvider;
import uk.ac.stfc.isis.ibex.validators.PvValidator;
Expand All @@ -48,6 +49,8 @@ public class BlockDetailsViewModel extends ErrorMessageProvider {
private final EditableConfiguration config;

private final List<String> facilityPvList;



/**
* Constructor.
Expand Down Expand Up @@ -150,8 +153,26 @@ public boolean isLocal() {
* @param local true for local
*/
public void setLocal(boolean local) {
String prefix = Instrument.getInstance().getPvPrefix();
String pvAddress1 = pvAddress;
if (local) {
if (!pvAddress.startsWith(prefix)) {
pvAddress = prefix + pvAddress;
}
}else {
if (pvAddress.startsWith(prefix)) {
pvAddress = pvAddress.substring(prefix.length());
}
}
firePropertyChange("local", this.local, this.local = local);
firePropertyChange("pvAddress", pvAddress1, pvAddress);
}

public String getPrefix() {
return Instrument.getInstance().getPvPrefix();
}



/**
* Open the PV dialog window.
Expand All @@ -169,7 +190,6 @@ public void openPvDialog() {
public void updateBlock() {
editingBlock.setName(name);
editingBlock.setPV(pvAddress);

editingBlock.setIsLocal(local);
editingBlock.setIsVisible(visible);
}
Expand Down