package org.safehaus.penrose.studio.federation.nis.editor;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.apache.log4j.Logger;
import org.safehaus.penrose.federation.NISDomain;
import org.safehaus.penrose.federation.FederationRepositoryConfig;
import org.safehaus.penrose.federation.FederationClient;
import org.safehaus.penrose.studio.dialog.ErrorDialog;
/**
* @author Endi S. Dewata
*/
public class NISYPConfPage extends FormPage {
Logger log = Logger.getLogger(getClass());
FormToolkit toolkit;
NISEditor editor;
FederationClient federationClient;
Text text;
public NISYPConfPage(NISEditor editor, FederationClient federationClient) {
super(editor, "YP_CONF", " yp.conf ");
this.editor = editor;
this.federationClient = federationClient;
}
public void createFormContent(IManagedForm managedForm) {
toolkit = managedForm.getToolkit();
ScrolledForm form = managedForm.getForm();
form.setText("yp.conf");
Composite body = form.getBody();
body.setLayout(new GridLayout());
Section section = toolkit.createSection(body, Section.TITLE_BAR | Section.EXPANDED);
section.setText("/etc/yp.conf");
section.setLayoutData(new GridData(GridData.FILL_BOTH));
Control sourcesSection = createSection(section);
section.setClient(sourcesSection);
refresh();
}
public Composite createSection(Composite parent) {
Composite composite = toolkit.createComposite(parent);
composite.setLayout(new GridLayout(2, false));
text = toolkit.createText(composite, "", SWT.BORDER | SWT.MULTI | SWT.READ_ONLY | SWT.V_SCROLL | SWT.H_SCROLL);
text.setLayoutData(new GridData(GridData.FILL_BOTH));
Composite rightPanel = toolkit.createComposite(composite);
rightPanel.setLayout(new GridLayout());
GridData gd = new GridData(GridData.FILL_VERTICAL);
gd.verticalSpan = 2;
gd.widthHint = 120;
rightPanel.setLayoutData(gd);
Button refreshButton = new Button(rightPanel, SWT.PUSH);
refreshButton.setText("Refresh");
refreshButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
refreshButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent selectionEvent) {
refresh();
}
});
return composite;
}
public void refresh() {
try {
StringBuilder sb = new StringBuilder();
sb.append("# /etc/yp.conf - ypbind configuration file\n");
sb.append("# Valid entries are\n");
sb.append("#\n");
sb.append("# domain NISDOMAIN server HOSTNAME\n");
sb.append("# Use server HOSTNAME for the domain NISDOMAIN.\n");
sb.append("#\n");
sb.append("# domain NISDOMAIN broadcast\n");
sb.append("# Use broadcast on the local net for domain NISDOMAIN\n");
sb.append("#\n");
sb.append("# domain NISDOMAIN slp\n");
sb.append("# Query local SLP server for ypserver supporting NISDOMAIN\n");
sb.append("#\n");
sb.append("# ypserver HOSTNAME\n");
sb.append("# Use server HOSTNAME for the local domain. The\n");
sb.append("# IP-address of server must be listed in /etc/hosts.\n");
sb.append("#\n");
sb.append("# broadcast\n");
sb.append("# If no server for the default domain is specified or\n");
sb.append("# none of them is rechable, try a broadcast call to\n");
sb.append("# find a server.\n");
sb.append("#\n");
sb.append("\n");
for (FederationRepositoryConfig domain : federationClient.getRepositories("NIS")) {
sb.append("domain ");
sb.append(domain.getParameter(NISDomain.DOMAIN));
sb.append(" server ");
sb.append(domain.getParameter(NISDomain.SERVER));
sb.append("\n");
}
text.setText(sb.toString());
} catch (Exception e) {
log.error(e.getMessage(), e);
ErrorDialog.open(e);
}
}
}